$PATH環境変数を設定する理由と場所をどのように知ることができますか?

$PATH環境変数を設定する理由と場所をどのように知ることができますか?

私はOSXでiterm2でzshバージョン5.0.8を使用しています。

コンピュータを起動して変数をprintenv表示します。$PATH

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin

私の理解によると、zshは次のファイルを順番にインポートします。

/etc/zshenv
~/.zshenv
/etc/zshrc
~/.zshrc

確認してみると、最初の3つのファイルがなく、私のファイルは.zshrcデフォルトで空であり、$ PATH変数とは何の関係もありません。

では、変数はどこに設定されていますか$PATH? ? ?

ベストアンサー1

私は文字通り今日この問題で苦労しました。

OS X Yosemiteでは、PATHはややバイパス方式で構成されています。

私はcremefraicheが言ったように、ZSHに組み込まれた機能があり、$PATH他の設定がない場合はそれを使用しますが、これはあなたのソースではないと思います。まず、/etc/pathsディレクトリのリストを含むファイルがあります。ディレクトリを含むより多くのファイルがあるディレクトリもあります/etc/path.d。プログラムは/usr/libexec/path_helperこれらのディレクトリのリストを取得し、既存の変数(存在する場合)とマージし、重複エントリを削除し、最初にリストされたディレクトリとともに$PATH結果を出力します。/etc/paths

自分で実行しても何の害もありません。これは私の結果です。

$ /usr/libexec/path_helper 
PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/MacGPG2/bin:/Users/alan/.local/bin:/Users/alan/src/go/bin"; export PATH;

それ自体は何もしませんが、私のコンピュータから呼び出されます/etc/zprofile

if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi

Appleはこのコードを他のバージョンのOS Xで少し移動したように見えるため、これはコンピュータによって異なる場合があります。

リストは次のとおりですみんなOS XでZSHが読み取ったファイル(評価順):

  1. /etc/zshenv
  2. ~/.zshenv
  3. /etc/zプロファイル
  4. ~/.zprofile
  5. /etc/zshrc
  6. ~/.zshrc
  7. /etc/zログイン
  8. ~/.zログイン
  9. ~/.zlogout
  10. /etc/zlogout

これらのファイルのいくつかは、非対話型シェルスクリプトとして実行されるときなどの特定の状況では評価されませんが、ここではこれについては説明しません。興味があれば、ZSHのマニュアルページにあります。

$ man zsh

/etc/zprofile走っている点は注目に値する。後ろに ~/.zshenvしたがって、ZSHガイドに従って.zshenvに設定した場合、この問題が発生した場合は、名前を変更してシステムをすばやく設定することをお勧めします$PATHpath_helper/etc/zprofile/etc/zshenv$PATH

おすすめ記事