zsh
が大好きですが、$PATH
およびその他の変数アサーションをどこに配置すればよいかわかりませんか?それらはファイル.zshrc
.zprofile
.bashrc
.bash_profile
に散在しており、時には2倍になることがわかりました。
bash
を使用しているので、zsh
ファイル内に何かを置くことはあまり意味がありませんが、正確にrvm
、python
、node
などを$PATH
に追加する必要があります。
私が使用する特定のファイルがありますか(つまり、.zshenv
がnotが現在インストールされている)、私が使用しているファイルの1つ現在使用していますか、それとも重要ですか?
tl; drバージョン:~/.zshrc
を使用
そして manページを読む の違いを理解するには:
~/.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 link はこう言います:
ログイン時に、Zshは次のファイルをこの順序で取得します。
/etc/profile
このファイルは、ログイン時にすべてのBourne互換シェルから取得されます。
これは、/etc/profile
がログイン時にzsh
によって always read であることを意味します。ArchLinuxプロジェクトの経験はありません。 Wikiはそのディストリビューションに対して正しいかもしれませんが、 not は一般的に正しいです。情報isはzshのマニュアルページと比較して間違っており、OS Xのzshには適用されないようです($PATH
のパスは/etc/profile
に設定されていません。 zshセッション)。
$ PATHにrvm、python、nodeなどの追加を正確に配置する必要があるのはどこですか?
通常、$PATH
を~/.zshrc
からエクスポートしますが、 zshall のマニュアルページ、特に「STARTUP/SHUTDOWN FILES」セクションを読む価値があります-~/.zshrc
は interactiveで読み取られますシェル。ニーズに合っている場合もあれば、そうでない場合もあります-あなたが呼び出すzsh
シェルごとに$PATH
が必要な場合(interactive
とそうでない、両方ともlogin
とそうでない両方)、~/.zshenv
がより良いオプションです。
使用する必要がある特定のファイル(つまり、インストールに現在存在しない.zshenv)、現在使用しているファイルの1つ、またはそれも重要ですか?
起動時に読み込まれるファイルの束があり(リンクされたman
ページを確認してください)、その理由があります-各ファイルには特定の場所があります(すべてのユーザーの設定、ユーザー固有の設定、ログインシェルの設定、すべてのシェルの設定)など)。~/.zshenv
が存在しないことを心配しないでください。必要な場合は作成してください。
.bashrc
および.bash_profile
は、~/.zshrc
または同様のものから明示的にソースしない限り、zsh
によってnotによって読み取られます。 bash
とzsh
の間の構文は、 not 常に互換性があります。 .bashrc
と.bash_profile
は両方とも、bash
設定ではなく、zsh
設定用に設計されています。
これは、STARTUP/SHUTDOWN FILESセクションにあるzshのマニュアルページのドキュメントです。
Commands are first read from /etc/zshenv this cannot be overridden.
Subsequent behaviour is modified by the RCS and GLOBAL_RCS options; the
former affects all startup files, while the second only affects global
startup files (those shown here with an path starting with a /). If
one of the options is unset at any point, any subsequent startup
file(s) of the corresponding type will not be read. It is also possi-
ble for a file in $ZDOTDIR to re-enable GLOBAL_RCS. Both RCS and
GLOBAL_RCS are set by default.
Commands are then read from $ZDOTDIR/.zshenv. If the Shell is a login
Shell, commands are read from /etc/zprofile and then $ZDOTDIR/.zpro-
file. Then, if the Shell is interactive, commands are read from
/etc/zshrc and then $ZDOTDIR/.zshrc. Finally, if the Shell is a login
Shell, /etc/zlogin and $ZDOTDIR/.zlogin are read.
これから、ファイルが読み取られる順序を確認できます。
/etc/zshenv # Read for every Shell
~/.zshenv # Read for every Shell except ones started with -f
/etc/zprofile # Global config for login shells, read before zshrc
~/.zprofile # User config for login shells
/etc/zshrc # Global config for interactive shells
~/.zshrc # User config for interactive shells
/etc/zlogin # Global config for login shells, read after zshrc
~/.zlogin # User config for login shells
~/.zlogout # User config for login shells, read upon logout
/etc/zlogout # Global config for login shells, read after user logout file
詳細情報を取得できます こちら 。
私は同様の問題を抱えていました(bash端末コマンドでは正しく動作していましたが、zshはコマンドが見つかりませんというエラーを示しました)
以前に〜/ .bashrcに貼り付けていたものは何でも貼り付けてください
~/.zshrc