De man bash
:
When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.
When a login shell exits, bash reads and executes commands from the files ~/.bash_logout and /etc/bash.bash_logout, if the files exists.
When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists.
"Shells interativos" são aqueles que começam em primeiro plano em um terminal, mas não são necessariamente shells de login .
A login shell is one whose first character of argument zero is a -, or one started with the --login option.
Terminais GUI não fazem isso.
É por isso que, geralmente, .profile
sources .bashrc
- então .bashrc
pode conter o material que você quer para todos shells, e .profile
qualquer material adicional apenas para shells de login. Às vezes, isso é qualificado em .profile
verificando se $PS1
(o prompt interativo) está definido, para que .bashrc
seja incluído apenas para os interativos. Uma razão para isso seria evitar o uso de certos aliases em shells não interativos (por exemplo, execução de scripts).
Então: você pode colocar sua definição de $ PATH em ~/.bashrc
e ter certeza de que ela é proveniente de ~/.profile
ou ~/bash_profile
.