Traditionally, /bin/sh would have been the original Bourne shell, which has no history or command-line editing, and no job control.
For about the last 15 years or so, most Unixes have had the POSIX shell installed, or at least ksh or bash (which are very nearly POSIX-like), but still have the more limited shell in /bin/sh
The reason for that is so that older shell scripts which expect the older sh
command will still work.
Since characters like {
, }
and !
have special meaning to bash, it's possible that an older shell script using those characters (without escaping them) could fail.
(The Bourne shell would take !!{1,2}
literally, whereas bash would interpret that as a repeat of the previous command (!!
) followed by a brace-expansion).
On Linux though, the sh
command is almost always just a link to bash
, with all the same features.
for a general overview over the different shells (not just
– akira – 2010-03-30T16:13:21.620sh
andbash
): http://en.wikipedia.org/wiki/Comparison_of_command_shells1
Another great history here: http://www.faqs.org/faqs/unix-faq/shell/shell-differences/
– John Wright – 2010-03-31T21:58:07.590