Today, there is very lots of shells like sh, bash, csh, tcsh, ksh, zsh, ash ...
For various reasons, it makes sens to choose one, a time for all, although it is not so easy.
Personally, I have first chosen tcsh for its functionalities and its legibility very near the C language. On the first hand, it was not a bad choice because thanks to it, I had done all I had needed, on the other hand I had faced two issues.
The first was the fact that function does not exists under tcsh, and that alias become dirty very quickly.
The second, the more important, is this is not installed by default on all *nix operating systems.
The wish to create something which can be used on lots of operating system, particularly on GNU/Linux, Solaris, and Cygwin which was my first shell multi-OS need, my second and definitive choice has been for GNU/Bash. It resolves the two points and it perfectly fits my needs.
To lead me on this choice, I have read lots of articles and Web Site, and I have concluded that GNU/Bash is now embedded as installation base on almost all operating systems. In the case it would not, it can be used as sh compatible.
It is why, I think it is the best choice in most cases. If you have not made your choice, you might make this one too, it will be a guarantee of perenity and should answer to all your needs.