Change the Shell in Mac OS X Terminal

Tired of bash? Prefer ksh, tcsh, or sh? You can quickly change the default shell in Terminal app, in addition to changing a users default login shell for when logging in remotely with SSH or otherwise. Here’s how to do both.
Change Terminal Apps Default Shell in OS X
- Open Preferences from the Terminal menu, click the “Startup” tab
- Under “Shells open with” choose “Command (complete path)” and set the new shell

Change a User Default Login Shell in Mac OS X
You can also change the default shell through the command line itself using the chsh command, this will be necessary if you want the default shell to be different when logging in with SSH or telnet. You’ll need to authenticate each change:
ksh:
chsh -s /bin/ksh
tcsh:
chsh -s /bin/tcsh
bash (default):
chsh -s /bin/bash
sh:
chsh -s /bin/sh
We covered the first part of this years ago and it hasn’t changed since, even with OS X Lion and OS X Mountain Lion.

With MacPorts installed you also able to install newer versions of the Bash (e.g. 4.2.20) and start it by default.
What is the difference between the following:
ksh
tcsh
bash
sh
When you want to create Scripts, to automate something on your system (e.g. renaming a lot of files, or what ever) the different shells provide different commands…
It’s really a difference in scripting and some shells offer different binaries than others. Bash is the most common, there is little reason not to use it.
Or right mouse Click in System preferences > accounts > yourLoginName and change it system wide
Use directory services. For example:
sudo dscl . -change /Users/chiggsy UserShell /bin/bash /opt/local/bin/zsh
Point for chiggsy for mentioning zsh.
FWIW, /bin/zsh exists on my stock Lion install (I suspect it’s there on any stock Lion install).
[...] enter the new shell on a session basis to start testing it out, if you like what you’re using change the default shell to fish with the following command (/bin/bash is the OS X default shell, if you want to go [...]
[...] executed command while replacing the erroneous syntax. You’ll need to be using the default bash shell for this to [...]