一部のプロセスで$ PATHを手動で設定する必要があるのはなぜですか?

一部のプロセスで$ PATHを手動で設定する必要があるのはなぜですか?

次の行で始まるCGIスクリプトをデバッグしようとしています。

#!/usr/bin/env python3

もちろん問題は、$PATHApache 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それを行うのにどのような問題があるかある程度知っています。)

関連情報