You may wish to read this http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/
In general, bash is the default on Linux, whilst ksh tends to be the default on commercial *nix eg Solaris.
These are both 'modern' shells ie have a lot of built-in funcionality.
This is for non-root users; root shell tends to be called 'sh', which can actually be the old Bourne shell or the POSIX shell.
Bash is highly compatible with ksh; just watch out for differences in gnu versions of utilites eg 'find'.
I highly recommend specifying the full shell path+name at the start of every shell script file to avoid nasty surprises. You cannot assume that even the same named shell will be stored in the same path on different *nixes.
In some instances (eg read the startup rules for logging in in different circumstances) a shell may be symlinked to another shell....