This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

If you're going to learn a shell other than sh/bash, you might as well just go with zsh. I don't think anyone seriously contests that it's the most powerful and feature-packed of the alternative shells; whether it's just bloat is, of course, still up for debate.

I've heard good things about fish, but never worked up the effort to bother with them.

The admins I know consider csh and tcsh to be abominations that should be avoided at all costs, and I agree with them despite never having been forced to put myself through either shell.

I would recommend knowing bash well as it is one of the most common (generally the Linux default). Personally, I love zsh as my interactive shell. It has great completion features. For example, you can set a list of hosts and when you do something like ssh Ser[tab] it will know to try to tab auto complete one of those hosts. It also has recursive globing, so if you want to find all jpeg files in the current and subdirectory you can use ls -ld **/*.jpg . There are lots of fun features with zsh (search for people's .zshrc files), and you can set it to 'bash compatible', so it is easy to switch between the two. If you combine this with GNU Screen you might find the command line becomes quite a pleasure to work with.

For what it's worth, most people don't switch off between shells frequently so it'll be hard to get a well-rounded comparison of the various options; you'll be more likely to see different people espousing the virtues of their favorite shells. From what little I've heard about different shells, they all offer some of the same basic features (like I/O redirection, command history, etc.) so personal preference is likely to be a large component.