次の行で始まるCGIスクリプトをデバッグしようとしています。
#!/usr/bin/env python3
もちろん問題は、$PATH
Apache HTTPdと私のシェル(特に)の環境変数が異なることです。
.profile
もう少し調べたところ、シェルが$PATH
呼び出してシステム全体に渡されることがわかりました/usr/libexec/path_helper
。/usr/libexec/path_helper
これを呼び出して出力をecho $PATH
。
Apache HTTPdへのパスはこの値とは異なります。これにより、HTTPdが値を手動で設定すると仮定しました$PATH
。
私の質問は、なぜですか?プロセスを手動で設定するのはなぜですか$PATH
?私の考えでは、これは/usr/libexec/path_helper
一種のシステム標準であるようですが、そうですか?
したがって、問題は、システムレベルの標準のように見える$PATH
システムレベルの標準を呼び出すのではなく、プロセスを手動で設定する理由です/usr/libexec/path_helper
。
答え1
/usr/libexec/path_helper
私はこれをMac OSでのみ見たことがあります。デーモン(特にAppleが管理していないデーモン)の間には明確な違いがあります。
実際、一部のユーザーが遊ぶことができるランダムパッケージをインストールしたため、ネットワークデーモンが新しいパスを選択した場合、ネットワークデーモンが間違ったパスから誤ったツールを呼び出すか、ネットワークデーモンに特定のバージョンが必要になることがあります。ソフトウェアの
(しかし、私はそれを完全に無効にし、どこでも手動/usr/libexec/path_help
で設定しましたが、PATH
それを行うのにどのような問題があるかある程度知っています。)