さまざまな選択肢を用いた多くの試行の後、私は結論を下します。
ありますか 統一された方法 設定する 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
子シェルへ)。 - 私はそれに応じて答えを編集します。