"If you've ever tried to change system-wide bash settings, you
know there are three major ways of invoking bash, all of which
behave differently when reading in settings files.
"Interactive login shell (e.g., when logging in from the console
or via ssh)
Interactive non-login shell (e.g., when you run bash at a terminal
Non-interactive shell (e.g., to run a shell script)
"An interactive shell has both input and output connected to a
tty (usually the user's terminal). If you type echo $- and the
value contains i, the shell is interactive. (The other letters are
options passed in at invocation, or via the set builtin.) A login
shell is started with the --loginoption. This is usually handled by
whatever program you're using for login."