Some shells specialize in convenience features, while others aim for a rich scripting language. Scripts allow you to execute many shell commands in a row, similar to a DOS batch file. (ack!) Convenience features include such things as filename completion and wildcards. Still other shells strive for simplicity and small size. Here's a listing of some of the more common shells and their notable features, in alphabetical order:
This is probably the simplest of the shells listed here, since it's the simplest. However, there's not much in the convenience features department. One plus to this shell is that it's available on nearly every UNIX flavor. Since the other shells provide what Bourne does, and then some, this isn't the most popular. It may be located in /usr/bin/old/sh [NOTE-It isn't on my Debian Linux box, but it is on my Solaris box]
This is the GNU project's shell, which is mostly a descendant of the Korn shell. It has a large number of features, and may be somewhat difficult to work with at first (the man page is ~5000 lines long) if you try to learn all the features, which not only derives from Korn, but also from the C Shell. In Linux, it's generally located in /bin/bash and is the default.
This is the precursor to the TC shell and not much more complex than the Boure Shell. It also has quite a different feel than Bourne. Some of its features are awkward and poorly documented, so it may be somewhat difficult to get started with this one. It does provide command and filename completion, however, and some like its wildcards better than Korn's. It's also not very portable, but it is a step up from Bourne.
A fairly average shell, the Korn shell provides most of the C shell's features in an evironment similar to the Bourne shell. Korn does provide filename completion (in two keystrokes), but not command completion. It's fairly portable and is located in /usr/bin/ksh in Linux. It is a decent choice for beginners, but doesn't have some of the Bourne Again Shell's extra features.
This shell is very similar to the Korn shell, however this shell is standardized unlike the Korn shell. It is a superset of the Bourne shell, but has fewer extras than the Bourne Again or Z shells. The POSIX shell is normally located in /bin/sh.
TC is an extension of the C shell, sporting hostname and variable completion, as well as a host of other features. It also offers customizable completion, which may be difficult to learn. If you've used the C shell, it's fairly simple to migrate to TC, picking up new features along the way. It does many things rather well, and has many extras, however the fact that there's so much to it may make it more difficult to learn for some. Oh yeah, it's in /usr/bin/tcsh.
This shell is for people who want everything. It makes for a rather large binary, but it is still a well-designed shell. It's probably impossible to learn all of the features that Z provides. Plenty of support for completion, spelling correction, shortcuts, and recursive directory searches is provided. It's fairly easy to move from any other shell to Z due to its ability to emulate most shells. It's not included on as many systems as the others listed. Check http://sunsite.auc.dk/zsh/ for more zsh info and downloads.