Por que alguns processos definem $ PATH manualmente?

0

Eu estava tentando depurar meu script CGI que começou com a linha:

#!/usr/bin/env python3

Claro, o problema era que as variáveis de ambiente (especificamente, $PATH ) do Apache HTTPd e meu shell eram diferentes.

Após algumas pesquisas, descobri que o .profile no nível do sistema para o shell define o $PATH chamando /usr/libexec/path_helper . Eu verifiquei isso chamando /usr/libexec/path_helper e comparando a saída com a saída de echo $PATH .

O caminho do Apache HTTPd é diferente desse valor. Isso me faz supor que o HTTPd define o valor de $PATH manualmente.

Minha pergunta é: por quê? Por que um processo definiu $PATH manualmente? Eu presumo que /usr/libexec/path_helper é algum tipo de padrão de sistema, não?

Assim, a pergunta é: por que um processo definiria $PATH manualmente, em vez de chamar algum tipo de padrão de nível de sistema, que /usr/libexec/path_helper parece um padrão de nível de sistema.

    
por Utku 01.12.2017 / 04:15

1 resposta

1

/usr/libexec/path_helper Eu só vi no Mac OS X; daemons (e também cron) no unix tipicamente não usam o mesmo ambiente (nem a mesma configuração) que o shell, então há uma divisão notável entre shells interativos (que a Apple fornece alguma configuração automagic para) e daemons (especialmente aqueles não gerenciados pela Apple).

Na verdade, pode ser muito ruim se um daemon de rede escolheu um novo caminho porque algum usuário instalou algum pacote aleatório para brincar e, de repente, o daemon de rede está chamando a ferramenta errada do caminho errado ... ou talvez o daemon de rede precisa de uma versão específica do software X, não do sistema de caminho do sistema inteiro ...

(A propósito, desative completamente o /usr/libexec/path_help e defino PATH manualmente em todos os lugares, mas sei mais ou menos em que problemas estou me envolvendo ao fazer as coisas dessa maneira.)

    
por 01.12.2017 / 05:08