私は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が読み取ったファイル(評価順):
- /etc/zshenv
- ~/.zshenv
- /etc/zプロファイル
- ~/.zprofile
- /etc/zshrc
- ~/.zshrc
- /etc/zログイン
- ~/.zログイン
- ~/.zlogout
- /etc/zlogout
これらのファイルのいくつかは、非対話型シェルスクリプトとして実行されるときなどの特定の状況では評価されませんが、ここではこれについては説明しません。興味があれば、ZSHのマニュアルページにあります。
$ man zsh
/etc/zprofile
走っている点は注目に値する。後ろに ~/.zshenv
したがって、ZSHガイドに従って.zshenvに設定した場合、この問題が発生した場合は、名前を変更してシステムをすばやく設定することをお勧めします$PATH
。path_helper
/etc/zprofile
/etc/zshenv
$PATH
答え2
これは言及されbash
ましたが。zsh
デフォルト値は次のとおりです。道
bash
コンパイル時に決定されます。スタートアップファイルで変更できますが、スタートアップファイルには設定されません。
FedoraおよびRed Hat Enterprise Linux実用ガイド:第7版。 p359。
編集する
もう少し詳しく調べたところ、デフォルトはPATH
実際にコンパイル中に設定され、次に見つかることがわかりました。初期化プログラム文書。
/* Set default path */ path = (char **) zalloc(sizeof(*path) * 5); path[0] = ztrdup("/bin"); path[1] = ztrdup("/usr/bin"); path[2] = ztrdup("/usr/ucb"); path[3] = ztrdup("/usr/local/bin"); path[4] = NULL;
編集2:
私はfreenodeからzsh IRCにアクセスし、開発者はビルド中にPATHが設定されたことを示す4つのコマンドのリストを提供できました。私はこのコマンドを拡張チャットに投稿しましたが、X時間が経過するとコマンドが失われるという事実に気づいていませんでした。自分で見たい場合は、IRC開発者にデモを依頼してください。