When I add that path to PATH in /etc/environment, the user can call the script without providing the full path but the daemon can not; it just says "not found".
De acordo com esta fonte , que é a documentação do IBM AIX (não consegui encontrar mais nada), mas é presumivelmente verdadeira em geral: 1
The first file that the operating system uses at login time is the /etc/environment file. The /etc/environment file contains variables specifying the basic environment for all processes.
Note que não é originado em nenhum sistema em .profile
, então isso é codificado em algum lugar. No entanto, se for aplicado "no momento do login", não será aplicado a um daemon, que é iniciado pelo init e nunca efetua login (embora "para todos os processos" contradiga isso, talvez tenha sido apenas uma má escolha de palavras). / p>
De acordo com este superusuário Q & A , /etc/environment
faz parte do PAM , que suporta a premissa "no login" e novamente significa que não será usado por daemons gerados pelo init. Existem muitas outras referências para isso também, mas parece que não há documentação do PAM.
should I rather always use full path names?
Este é o processo mais comum e geralmente recomendado - é possível que os daemons iniciem sem $ PATH. Assim, você pode definir isso em um script de inicialização ou, como você diz, usar nomes de caminho completos conforme apropriado.
1. "/ etc / environment" não aparece de forma alguma no que parecem ser as especificações POSIX relevantes [1] [2] .