/etc/environment /etc/profile ~/.profile /etc/bash.bashrc ~/.bash /etc/motd ~/.pam_environment
Script
/etc/bash.bahrc # for all users
~/.bash # for individual user
~/bash_profile
Shell config files such as ~/.bashrc, ~/.bash_profile, and ~/.bash_login are often suggested for setting environment variables. While this may work on Bash shells for programs started from the shell, variables set in those files are not available by default to programs started from the graphical environment in a desktop session.
Configuration File:
/etc/environment #This file is specifically meant for system-wide environment variable settings. It is not a script file, but rather consists of assignment expressions, one per line.
~/.pam_environment #This file is specifically meant for setting a user's environment. It is not a script file, but rather consists of assignment expressions, one per line.
Enivronment Variable
https://help.ubuntu.com/community/EnvironmentVariables#Manipulating_environment_variables_and_values
Difference between bash.bashrc and /etc/environment file
https://askubuntu.com/questions/150789/difference-between-bash-bashrc-and-etc-environment-file
Difference between /etc/environment and .profile
https://askubuntu.com/questions/866161/setting-path-variable-in-etc-environment-vs-profile?noredirect=1
sequence of scripts sourced upon login
https://askubuntu.com/questions/463462/sequence-of-scripts-sourced-upon-login
You seem to be logging in via ssh
which means you're running an interactive login shell, see above for what that means. So, in summary, the things you care about that are sourced when you log in are (and in this order):
- The SSH daemon, via the
pam_motd
module of the PAM library, displays the contents of/etc/motd
. Via thepam_env
module, it sets the environment variables from/etc/environment
and~/.pam_environment
. - A login shell is started, and the following files are read in order:
/etc/profile
/etc/bash.bashrc
(the default Ubuntu/etc/profile
sources/etc/bash.bashrc
).~/.bash_profile
. The other files that could have been read here (~/.profile
and~/.bash_login
) are ignored because~/.bash_profile
exists.