Where is the environment variable $SHELL first set on a UNIX system?

How can I find and print all of this type of default settings of my terminal?

2 Answers 2


Traditionally, by login(1):

     login sets the following environment variables:

     HOME        The user's home directory, as specified by the password

     SHELL       The user's shell, as specified by the password database.

Though these days it might be a window manager or terminal program making those settings, depending on the flavor of unix and how far they've departed from tradition. env will show what's currently set in the environment, which a shell or something else may have altered from the default. However, "terminal settings" are not typically environment variables, and shells like bash or zsh have a set command, and other places they hide settings...

  • Any idea what sets SHELL when logging in via SSH? Is login(1) involved (maybe via PAM)?
    – dpat
    Nov 13, 2022 at 11:25

You can check the default values of your system in /etc/default/useradd or with sudo useradd -D, this will output the default value for $SHELL and other variables.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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