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. Press the menu button in the top-right corner of the window and select Preferences.

  2. In the sidebar, select your current profile in the Profiles section.

  3. Select Command.

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