I’ve struggled to find an authoritative source to explain the different uses of the files:
~/.bashrc. Finally, I found a good explanation here. Quoting directly:
- When you login graphically to your system it will read
~/.profileso you put there settings like LANG which are important for graphical applications.
- When you open a terminal (except Gnome-terminal & Screen) you open a login shell which sources
- When you execute commands in non login shell like ssh server command or scp file server:~ or sudo(without -i) or su (without -l) it will execute
~/.bashrcis meant for non login invocations, you should not print there any output - it makes tools like scp fail.
- If the shell of the user is set to
/bin/sh, you will need to edit
/etc/passwdand set it to