At University my login shell is set to tcsh which I do not like, I prefer bash. I was unable to use chsh because the network uses NIS, and the NIS command ypchsh kept throwing errors. I searched the internet for a solution, not have much success, eventually I stumbled here which guided a bit further.
My final solution is to edit .cshrc to contain:
# Only run bash if the shell is interactive, otherwise X breaks!
if ( $?prompt ) exec /bin/bash --login
Now when I login or open a virtual terminal I am greeted by an authenticated bash shell which when closed (ie logout) also closes tcsh. I am very happy
One thing would be nice is to only apply the --login to true login shells but thats not much of an issue.
Edit (25/10/2006): I had to make a small change after I realised I was unable to login locally to X!