1. ホーム
  2. macos

[解決済み] zsh で $PATH 変数のアサーションをどこに置くか?

2022-03-03 16:57:49

質問

好きなもの zsh が、どこに置けばいいのかわからない。 $PATH といった変数のアサーションは?の間に散らばっていることがわかります。 .zshrc .zprofile .bashrc .bash_profile となり、2倍になることもあります。

の中に何かを入れることはできません。 bash を使っているので、あまり意味がありません。 zsh しかし をどこに配置すればいいのでしょうか? rvm , python , node などを追加して、私の $PATH ?

使用すべき特定のファイルはありますか(例. .zshenv を行うものです。 ではなく それとも、現在使用しているもののうちの1つでしょうか?

解決方法は?

tl;drバージョン:使用 ~/.zshrc

そして マニュアルを読む との違いを理解することができます。

<ブロッククオート

~/.zshrc , ~/.zshenv~/.zprofile .


私のコメントについて

回答に添付した私のコメントでは kevが与えた と、私は言いました。

これは間違っているようです。/etc/profile は、私が見つけたどの zsh ドキュメントにも記載されていません。

これは部分的に間違っていることが判明しました。 /etc/profile かもしれません を源泉とする zsh . ただし の場合のみ発生します。 zsh として呼び出されます。 sh または ksh これらの互換性モードでは、" を使用します。

通常のzsh起動/終了スクリプトは実行されません。ログインシェルは /etc/profile に続いて $HOME/.profile をソースとします。起動時に環境変数 ENV が設定されている場合、$ENV はプロファイルスクリプトの後にソースされます。ENV の値は、パス名として解釈される前に、パラメーター展開、コマンド置換、および算術展開が行われます。[ man zshall, "Compatibility" ].

ArchWiki ZSH リンク と書かれています。

<ブロッククオート

ログイン時、Zshは以下のファイルをこの順序でソースします。
/etc/profile
このファイルは、すべてのBourne互換シェルがログイン時に参照します。

これは、次のことを意味しています。 /etc/profile 常に読む によって zsh at login - 私は Arch Linux プロジェクトの経験がありません。そのディストリビューションでは wiki が正しいかもしれませんが、それは ではなく が一般的に正しい。その情報 は、zsh のマニュアルページと比べると不正確で、OS X 上の zsh には適用されないようです (パスが $PATH で設定されている /etc/profile が、私のzshセッションには表示されません)。



質問に答えるために

rvm、python、nodeなどを$PATHに追加する場合、正確にどこに置けばいいのでしょうか?

一般的に、私は自分の $PATH から ~/.zshrc を読んでみる価値はあると思います。 zshall のマニュアルページ、特に "STARTUP/SHUTDOWN FILES" のセクション - を参照してください。 ~/.zshrc を読み取ります。 インタラクティブ シェルは、あなたのニーズに合うかどうか - もし、あなたが $PATH に対して、すべての zsh シェルが呼び出されます(いずれも interactive とそうでないもの、両方 login としない、など)であれば ~/.zshenv がベターな選択肢です。

特定のファイル(例えば、現在私のインストールに存在しない.zshenv)、現在使用しているファイルの1つ、またはそれさえも重要ですか?

起動時に読み込まれるファイルが大量にある(リンク先の man 各ファイルには特定の場所(各ユーザーの設定、ユーザー固有の設定、ログインシェルの設定、各シェルの設定、など)があります。)
を気にする必要はありません。 ~/.zshenv 必要なら作ればいいし、読まれるはずです。

.bashrc そして .bash_profile ではない で読む zsh から明示的にソースを取得しない限り ~/.zshrc などの間にある構文です。 bashzsh ない は常に互換性があります。どちらも .bashrc.bash_profilebash の設定ではなく zsh の設定を変更します。