160

が大好きですが、自分の変数アサーションや他の変数アサーションをzshどこに配置すればよいかわかりません。$PATHそれらはファイル間に散らばっていて.zshrc .zprofile .bashrc .bash_profile、時には2倍になっていることがわかりました。

を使用しているため、ファイル内に何かを入れるのはbashあまり意味がありませんzshが、 などの追加を.rvmpythonnode$PATH

使用する必要がある特定のファイル (つまり、現在インストールに存在.zshenvないファイル) はありますか?現在使用しているファイルの 1 つですか?それとも重要ですか?

4

3 に答える 3

207

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

そして、manページを読んで、次の違いを理解してください。

~/.zshrc~/.zshenvおよび~/.zprofile


私のコメントについて

kevが与えた答えに添付された私のコメントで、私は言いました:

これは正しくないようです-/etc/ profileは、私が見つけたzshドキュメントにリストされていません。

これは部分的に正しくないことが判明しました:によって供給されている/etc/profile 可能性zshがあります。ただし、これは、が「またはzshとして呼び出された」場合にのみ発生します。これらの互換モードでは:shksh

通常のzsh起動/シャットダウンスクリプトは実行されません。ログインシェルソース/etc/profileの後に$HOME/.profileが続きます。ENV環境変数が呼び出し時に設定されている場合、$ENVはプロファイルスクリプトの後に供給されます。ENVの値は、パス名として解釈される前に、パラメーター拡張、コマンド置換、および算術拡張の対象になります。[ man zshall、「互換性」 ]。

ArchWikiZSHリンクには次のように書かれています。

ログイン時に、Zshは次のファイルをこの順序でソースします。/etc/profile
この
ファイルは、ログイン時にすべてのボーン互換シェルによってソースされます。

/etc/profileこれは、ログイン時に常に読み取られることを意味します-私はArchLinuxzshプロジェクトの経験がありません。wikiはそのディストリビューションに対して正しいかもしれませんが、一般的には正しくありません。情報zshのマニュアルページと比較して正しくなく、OS Xのzshには適用されないようです($PATH設定されたパス/etc/profileが私のzshセッションに到達しません)。



質問に対処するには:

$ PATHにrvm、python、nodeなどの追加を正確にどこに配置する必要がありますか?

通常、私は$PATHからエクスポートしますが、 zshallのmanページ、具体的には「STARTUP / SHUTDOWN FILES」セクションを~/.zshrc読む価値があります。インタラクティブシェルについては、ニーズに合う場合と合わない場合があります。あなたが呼び出したすべてのシェル(両方とそうでない、両方とそうでないなど)は、より良いオプションです。~/.zshrc$PATHzshinteractivelogin~/.zshenv

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

起動時に読み取られるファイルがたくさんあり(リンクされたmanページを確認してください)、その理由があります-各ファイルには特定の場所があります(すべてのユーザーの設定、ユーザー固有の設定、ログインシェルの設定、すべてのシェルの設定、等)。
存在しないことを心配しないでください~/.zshenv-あなたがそれを必要とするならば、それを作ってください、そしてそれは読まれます。

.bashrc明示的にソースまたは類似のものを使用しない限り、によって読み取られること.bash_profileはありません。との間の構文は常に互換性があるとは限りません。とは両方とも、設定ではなく設定用に設計されています。zsh~/.zshrcbashzsh.bashrc.bash_profilebashzsh

于 2012-05-14T12:27:05.557 に答える
20

同様の問題がありました(bashターミナルコマンドでは正しく機能していましたが、zshはコマンドが見つからないというエラーを示しました)

解決:


~/.bashrc に以前に貼り付けていたものを次の場所に貼り付けるだけです。

~/.zshrc
于 2015-03-22T04:36:11.507 に答える