Quando o $ PATH está definido?
Sobre /etc/profile :
Como podemos ler aqui :
... O arquivo
/etc/profilenã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 umPATHouPS1inicial para todos os usuários do shell de o sistema.
e:
Além da configuração de itens ambientais, o
/etc/profileserá 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á.