How To Read and Set Environmental and Shell Variables on a Linux VPS | DigitalOcean
The Difference between Login, Non-Login, Interactive, and Non-Interactive Shell Sessions
The bash shell reads different configuration files depending on how the session is started.
One distinction between different sessions is whether the shell is being spawned as a "login" or "non-login" session.
A login shell is a shell session that begins by authenticating the user. If you are signing into a terminal session or through SSH and authenticate, your shell session will be set as a "login" shell.
If you start a new shell session from within your authenticated session, like we did by calling the bash
command from the terminal, a non-login shell session is started. You were were not asked for your authentication details when you started your child shell.
Another distinction that can be made is whether a shell session is interactive, or non-interactive.
An interactive shell session is a shell session that is attached to a terminal. A non-interactive shell session is one is not attached to a terminal session.
So each shell session is classified as either login or non-login and interactive or non-interactive.
A normal session that begins with SSH is usually an interactive login shell. A script run from the command line is usually run in a non-interactive, non-login shell. A terminal session can be any combination of these two properties.
Whether a shell session is classified as a login or non-login shell has implications on which files are read to initialize the shell session.
A session started as a login session will read configuration details from the /etc/profile
file first. It will then look for the first login shell configuration file in the user's home directory to get user-specific configuration details.
It reads the first file that it can find out of ~/.bash_profile
, ~/.bash_login
, and ~/.profile
and does not read any further files.
In contrast, a session defined as a non-login shell will read /etc/bash.bashrc
and then the user-specific ~/.bashrc
file to build its environment.
Non-interactive shells read the environmental variable called BASH_ENV
and read the file specified to define the new environment.
Read full article from How To Read and Set Environmental and Shell Variables on a Linux VPS | DigitalOcean
No comments:
Post a Comment