さまざまな選択肢を用いた多くの試行の後、私は結論を下します。
ありますか 統一された方法 設定する PATH 異なる方法で起動されたアプリケーション(シェルスクリプト、Finder、Spotlightなど)の場合ええ、はい、そしていいえ:
- いいえ :設定
PATH シェル起動スクリプト(例: .bashrc )シェルによって起動されたアプリケーションに対してのみ機能します。
- いいえ :設定
PATH 現在の launchd 経由プロセス launchctl setenv PATH <...> 私には全く働きません。
- はい :設定
PATH に /etc/launchd.conf (そしてシステムを再起動すると)適切になります。 PATH Spotlight、Dock、およびFinderによって起動されたアプリケーション、およびその後の(ローカルの)シェルに表示されます。
- いいえ :リモートで起動されたシェルは ではない 環境を継承します。 (見る ...なぜssh経由のリモートシェルは環境を継承しないのですか。 )
シェルの設定に関する注意事項
で正しく機能するために 地元 それは重要です スイッチを切る の用法 /usr/libexec/path_helperデフォルトパスは /etc/paths のパスの順序が変わる可能性があります。 PATH**
収容する 遠い 再インポートする必要があるシェル launchd シェルへの環境。あなたの中でこのようなものを使ってください .bashrc:
# the vexatious path stuff
eval $(launchctl export)
問題全体の不幸な結果は以下のとおりです。
- ユーザーごとにこれらの統一された設定をする方法はありません。 (
~/.launchd.conf 動作しません。)
- ホームディレクトリの拡張などのテクニックを使って異なるソースからPATHを構築する簡単な方法はありません。
/etc/launch.confする ではない ssh経由でリモートからログインしたシェルで動作します(sshd親から継承した環境を渡さないlaunchd子シェルへ)。 - 私はそれに応じて答えを編集します。