Change the default login shell


Issue: The “factory set” default login shell starting in OS X 10.3 Panther is bash.  Some (misguided!) users may wish to use other shells (e.g., tcsh is popular).


Solution: In OS X 10.4 Tiger and earlier, changing default shells would have been accomplished using the application utility Netinfo Manager (see box below). However, this utility was removed starting in OS X 10.5 Leopard.

Instead, open the Users & Groups (OS X 10.7 Lion and later) or Accounts (OS X 10.6 Snow Leopard and earlier) preferences in System Preferences. Unlock the preferences by clicking on the lock icon in the lower left corner of the preferences panel and entering an administrator-level password. Then right-click (or control-click) on a user name and select the Advanced Options menu. Select the desired login shell from the pull-down menu, and click on “OK”. Log out and back in to put the change into effect.

A. Lorber pointed out to me that in order to change the default login shell, your chosen shell must also be listed in the file /etc/shells, which OS X consults to determine what is a valid shell. By default, /etc/shells contains the following entries:

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

If you want to use a different shell from these as your default login shell, then you must edit /etc/shells to include the full path to the installation of the shell on your computer (e.g., /opt/local/bin/bash). Editing /etc/shells requires an administrator-level password.

Solution for OS X 10.4 Tiger and earlier: To change the default shell for a particular user account, use the application utility Netinfo Manager. Under the users category in Netinfo Manager, look for the desired login name and find the shell item in the list of properties for that account. This should say /bin/bash by default; modify it to the desired shell (e.g., /bin/tcsh). This will require first unlocking the properties by clicking on the lock icon and entering an administrator-level password. Quit Netinfo Manager, then log out of the user account and log back in to globally initialize the new default shell.

OS X banner
Update Status: 9 Jan 2014