Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ugultopu/1a10d3f3bb15267a0e70aa2623c28687 to your computer and use it in GitHub Desktop.
Save ugultopu/1a10d3f3bb15267a0e70aa2623c28687 to your computer and use it in GitHub Desktop.

You should change it by running chsh -s /path/to/the/shell/that/you/like and then logging out and logging in again. You should NOT do it by configuring the "Shells open with: Command (complete path):" setting in Terminal.app settings.

If you attempt to change it by configuring the "Shells open with: Command (complete path):" setting in Terminal.app settings but leaving your default shell as is (that is, not running chsh -s /path/to/the/shell/that/you/like), you will be in a world of pain. You will keep having inconsistencies between the behavior that you get on Terminal.app vs. the behavior of the (other) apps that you use, since the (other) apps that you use will honor the default shell configuration that's set by running chsh -s /path/to/the/shell/that/you/like. The "Shells open with: Command (complete path):" setting in Terminal.app settings is completely irrelevant for the (other) apps that you use.

By the way, an alternative to running chsh -s /path/to/the/shell/that/you/like is to:

  • Open System Settings.
  • Select "Users and Groups".
  • Right click on the user whose shell that you like to change and select "Advanced Options...".
  • In the pop-up that opens, find "Login shell" and change its value.

As the warning in the pop-up suggests, you should restart your computer (or at least log out from your user and log back in again) for your changes to take effect. You might think that it's OK not to log out and log back in, since if you open a new tab on Terminal.app after these changes, you will see that your shell has actually been changed (assuming that your "Shells open with:" setting on Terminal.app settings were set to "Default login shell"). However, the reason for this is because Terminal.app always launches a login shell. However, the (other) apps that you use will most likely launch regular (non-login) shells, which means that they will use the configuration files of the previous login shell, since that's the one that's currently active on the system. Hence, you need to log out and log in for the login shell that's active on the system to change.

Reference for how-to on changing the default shell.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment