Change the Shell in Mac OS X Terminal
Tired of bash? Prefer zsh, ksh, tcsh, fish, 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.
How to Change Terminal Apps Default Shell in OS X
This adjusts the new shell that is used upon Terminal app launch, new terminal windows, and new terminal tabs, becoming the new default Mac shell.
- Open Preferences from the Terminal menu, click the “Startup” tab
- Under “Shells open with” choose “Command (complete path)” and set the new shell
Default shell options that can be switched to that are bundled with OS X include the following paths:
Placing any of those in the ‘Command (complete path)’ box will set the new shell as the terminal window default.
Note this changes the default shell used by Terminal app, which is different from the default login shell, that is changed through the following step instead…
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, which is shorthand for ‘change shell’. 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 as well, the command will ask directly or you can prefix it with sudo. Here’s how to set the default user shell to zsh, bash, tcsh, ksh, sh, or any other shell for that matter.
Change the user login default shell to zsh:
chsh -s /bin/zsh
chsh -s /bin/ksh
chsh -s /bin/tcsh
chsh -s /bin/bash
chsh -s /bin/sh
Simply adjust the path for chsh to set, like so:
chsh -s /path/to/alternate/shell/like/fish
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, and Mavericks.