sh (or the Shell Command Language) is a programming language described by the POSIX standard.
bash contains many more features including those of
sh is symlinked to
zsh (or the Z Shell) is like
bash on steroids, slightly (word-splitting) incompatible with
bash. If you are going this route, check out http://ohmyz.sh/