Quando o $ PATH está definido?
Sobre /etc/profile
:
Como podemos ler aqui :
... O arquivo
/etc/profile
não é muito diferente, mas é usado para defina variáveis ambientais do sistema em shells de usuários. As variáveis às vezes são os mesmos que estão no.bash_profile
, no entanto este arquivo é usado para definir umPATH
ouPS1
inicial para todos os usuários do shell de o sistema.
e:
Além da configuração de itens ambientais, o
/etc/profile
será execute os scripts em/etc/profile.d/*.sh
O que significa que $PATH
(para todos os usuários) é realmente definido por scripts em /etc/profile.d
, como também podemos concluir aqui .
Olhando para o meu sistema, nem tudo é exatamente como descrito aqui , mas o a informação é confirmada no entanto.
Uma pesquisa rápida (textual) em /etc
na string: /usr/local/bin
, da qual eu sei que está no meu (global) $PATH
, produz o arquivo /etc/environment
, que contém a linha:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
Estes são exatamente os diretórios no meu $PATH
(além dos locais).
A linha inferior é que $PATH
não está definido antes os scripts em /etc/init.d
são executados, mas na verdade definidos por scripts em etc/init.d
O que fazer?
A resposta aqui sugere definir o $PATH
variável no topo do script. Olhando (de novo) no meu sistema, isso é exatamente o que foi feito com, e. meu script /etc/init.d/saned
:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
Usar caminhos absolutos como você também funcionará.