Login shells

Shells in UNIX based systems can be started up in login and non-login modes:

Login shell

A login shell is a shell given to a user upon login into their user account. This is initiated by using the -l or --login option, or placing a dash as the initial character of the command name, for example invoking bash as -bash.

Sub shell

Sub shell, also called a non-login shell is a shell started after the login process without the -l or --login option and without an extra dash before the command name.

The general cases for having a login shell include:

  • Accessing your computer remotely using ssh.

  • Simulating an initial login shell with bash -l or sh -l.

  • Simulating an initial root login shell with sudo -i.

Start a login shell

You can allow Terminal to start a login shell. Your default shell will be started with a dash character prepended to its name.

  1. Open Edit ▸ Preferences.

  2. Your current profile is selected in the sidebar. If you wish to edit a different profile, click on its name.

  3. Select Command.

  4. Under the Command label, select Run command as a login shell.