Sign up ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I know I can set "Shells open with" in the Terminal preferences, but I'm curious if there's any system-wide way of setting this (similar to updating /etc/passwd in some Unixes).

share|improve this question

3 Answers 3

up vote 17 down vote accepted

Use the chsh utility like so:

chsh -s bash

Apple has changed chsh a bit on Mac OS X compared to the chsh you'd see in Linux for example. You can read up on theirs in the chsh Mac OS X Man Page.

share|improve this answer
And here I figured it was something complicated with some OSX-specific utility, heh. Thanks. – nall Sep 29 '09 at 0:11
@john - nicely learned :) – akira Sep 29 '09 at 4:42
Yeah I knew the answer last time too, I was just beaten to it! :( – John T Sep 29 '09 at 5:02

To do this using the Mac OS X GUI:

  1. Open “System Preferences.”
  2. Open the “Accounts”/“Users & Groups” preference pane and unlock the preference pane if applicable.
  3. On the user you wish to change the shell, control+click or right click on the user and choose “Advanced Options…”
  4. Where it says “Login Shell:” change this to the shell you wish to use.

Of note, this location is where you can change your home directory, UUID, User ID, Group ID, and short name if you're uncomfortable with the Terminal. There is a similar question located here as well.

share|improve this answer

Note that you will only be allowed to change to a shell listed in /etc/shells. This is normally fine, but it means that if you want to install Bash 4 (from Homebrew, MacPorts, or compiling your own), you need to add a line to /etc/shells. (I ran into this a few weeks ago, and figured it might help others to know...)

Edit: Tim Smith points out that you can get around the /etc/shells limitation if you run chsh as root via sudo. E.g. sudo chsh -s /usr/local/bin/my_shell $USER will work, even if my_shell is not listed in /etc/shells. I prefer to edit /etc/shells, but in the end, it's one use of sudo either way since you can't edit /etc/shells as a regular user. So perhaps six of one, half dozen of the other.

share|improve this answer
Why change /etc/shells if you don't have to? For sanity, I prefer to keep system files the same. – MattDiPasquale Oct 19 at 23:34
@MattDiPasquale I'm not sure what you mean by "sanity". /etc/shells is the file on the system that defines recognized shells. I change that file because I want to add a shell to the list of recognized shells. Seems pretty reasonable to me. – Telemachus Oct 20 at 14:35

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.