steve_s said:
I have a konsole open as user. I run echo $SHELL and it says /bin/sh, and I don't have tab completion.
Correct. /bin/sh does not support any advanced, interactive features like command history, tab completion, etc. It's mainly used for writing shell scripts. For example, the entire
rc(8) system on FreeBSD is written in /bin/sh.
I change to su. As su I run echo $SHELL and it says /usr/local/bin/bash, and I do have tab completion.
No, no, no, no, a thousand times, no! Do not change root's shell to anything under /usr/local. Leave it be. You shouldn't be running as root enough to care about root's shell.
If you really need a "root" account that uses bash, then set a password for user "toor", set the shell for "toor" to bash, and use that.
The first time you get a "can't boot to single-user because /usr/local won't mount and can't run bash", you'll understand.
Aren't bash and sh the same thing?
Not even close! The Bourne Shell (sh) is (one of?) the original shell for Unix. And it's primary purpose nowadays is for scripting. The Bourne Again Shell (bash) is for interactive use, includes a bunch of extra features geared toward interactive use, pretends to be compatible with sh (but really isn't), and does things very differently from sh.
Linux users are the only ones who think sh and bash are the same.
And, they write "sh" scripts using a lot of bashisms, making them non-portable.