Bash is totally unusable. None of my typesets ro awks work at all under that thing and set -o vi doesn't work that well either, if at all. I avoid bash like it was csh, which might be even more useless.
Alternatively, you could use Perl to do that scripting. Forget awk, sed, and never say "typeset" again.
Saying "set -o vi" works quite well on my home systems (using bash) as well as at the office (ksh). Sounds like you got a different problem.
Again, though, none of this has anything to do with the kernel itself.