Normalmente, o seu PATH é definido pelo shell. Para o Bash, tudo é explicado no manual . Você também pode abrir man bash
e pular para a parte INVOCATION
.
Invoked as an interactive login shell, or with --login
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.
Invoked as an interactive non-login shell
When an interactive shell that is not a login shell is started, Bash reads and executes commands from ~/.bashrc, if that file exists. In OS X, additionally, there is
path_helper
which reads the contents of/etc/paths.d
and appends those to your path.
A chave aqui é que, no OS X, o Terminal abre um shell de login por padrão, enquanto no Linux, os shells geralmente são iniciados como shells não-login. Josh Staiger tem uma boa explicação do login vs shells não-login .
Portanto, há essencialmente apenas esses dois três nos quais você pode definir caminhos:
-
/etc/profile
(que chamapath_helper
) -
/etc/paths
e/etc/paths.d
(chamado depath_helper
) - seu arquivo de configuração do shell (
.bash_profile
)