.zshenv、.zshrc、.zlogin、.zprofile、.zlogoutには何を入れるべきですか?


132

のさまざまなスタートアップファイルに含めるべきものとすべきでないものに関するガイドラインを探していますzsh

これらのファイルのソースの順序、およびそれらがソースとなる条件は理解していますが、各ファイルに何を入れるかはまだ明確ではありません。


回答:


156

以下に、各ファイルに含まれる傾向のある非排他的なリストを示します。

  • 以来.zshenv、常に供給され、それは多くの場合、他のプログラムに利用可能であるべきエクスポート変数が含まれています。たとえば、$PATH$EDITOR、とは$PAGER多くの場合に設定されています.zshenv。また、設定$ZDOTDIR.zshenvて、残りのzsh構成の代替の場所を指定できます。
  • .zshrc対話型シェル構成用です。そこで、setoptおよびunsetoptコマンドを使用して、対話型シェルのオプションを設定します。シェルモジュールをロードしたり、履歴オプションを設定したり、プロンプトを変更したり、zleと補完を設定したりすることもできます。対話型シェルでのみ使用される変数も設定します(例:)$LS_COLORS
  • .zloginログインシェルの開始時にソースされます。このファイルは、を使用してXを起動するためによく使用されますstartx。一部のシステムは起動時にXを起動するため、このファイルは常に非常に有用ではありません。
  • .zprofile基本的には、.zlogin直後にソースされるので.zshrcはなく、直後にソースされることと同じです。zshのドキュメントによると、.zprofilekshファンの `.zlogin 'の代替としての意味です。2つを一緒に使用することは意図していませんが、必要に応じて確実に行うことができます。」
  • .zlogout 端末のクリアとリセットに使用されることがあります。

あなたは通過しなければならないランダムGithubのユーザーの構成ファイルの各ファイルが含まれているべきかの良いアイデアを得るために。


3
明確にするために、.zloginのソースは.zshrcになっています(詳細man zshallについては参照)。
アーロン

8
で設定$PATHする場合.zshenv、他のさまざまなファイルはすべて、この値をオーバーライドするこのファイルの後にソースされます。zsh.org/mla/users/2003/msg00600.htmlを参照してください。
ビューバーカー

どこにすべき$LANG$LC_ALL行きますか?
レナーホイト

23
私自身のメモ/確認のために、そして他の誰かを助けるために、究極の順序は.zshenv→[ .zprofileログインの場合]→[ .zshrcインタラクティブの場合]→[ .zloginログインの場合]→[ .zlogout時々]です。
ガブリエルL.

23

私の意見では、各ファイルに含まれるべき/含まれないもののリストです。

.zshenv

[毎回読む]

常にソースされているため、頻繁更新する必要がある環境変数を設定する必要があります。おそらく、セッション全体を再起動して更新する必要はないため、PATH(またはそれに関連する対応するパス)は良い例です。そのファイルに設定することにより、ターミナルエミュレータを再度開くと、PATH値が更新された新しいZshインスタンスが起動します。

ただし、Zshを起動して単一のコマンドを-cオプションを使用して)実行する場合でも、などの別のツールによっても読み取られることに注意してくださいmake標準コマンドのデフォルトの動作を変更しないように非常に注意する必要があります。標準コマンドを使用する一部のツールが壊れる可能性があるためです(エイリアスを設定するなど)。確かに、あなたがしていることを知っているので、それは禁止されていません。

.zprofile

[ログイン時に読む]

私はそのファイルを個人的に扱います.zshenvが、一度設定する必要があるコマンドや変数は頻繁に更新する必要はありません

  • ツールを構成する環境変数(コンパイルのフラグ、データフォルダーの場所など)
  • 実行にSCONSFLAGS="--jobs=$(( $(nproc) - 1 ))"時間がかかる可能性があるため、コマンド(など)を実行する構成。

そのファイルを変更すると、現在のシェルをログインシェルとして新しいシェルに置き換えることにより、構成の更新を取得できます。

exec zsh --login

.zshrc

[インタラクティブなときに読む]

インタラクティブな使用にのみ必要なすべてをここに入れます:

  • 促す、
  • コマンド補完、
  • コマンド修正、
  • コマンドの提案、
  • コマンドの強調表示、
  • 出力カラーリング、
  • エイリアス、
  • キーバインディング、
  • コマンド履歴管理、
  • その他のさまざまなインタラクティブツール(auto_cd、manydots-magic)...

.zlogin

[ログイン時に読む]

このファイルは似ていますが.zshprofile、後に読み込まれ.zshrcます。現時点では、シェルは完全にセットアップされていると思います。

そのため、シェルの動作を変更しない外部コマンド(ログインマネージャーなど)を起動するために使用します。

.zlogout

[ログアウト時に読む] [ログインシェル内]

ここで、ログイン時に端末またはその他のリソース設定をクリアできます。

設定場所の選択方法

  • 非対話的に実行されるコマンドに必要です:.zshenv
  • 新しいシェル更新する必要があります.zshenv
  • 完了するまでに時間がかかるコマンドを実行ます。.zprofile
  • インタラクティブな使用に関連しています.zshrc
  • それはシェルが完全に設定されたときに実行するコマンド.zlogin
  • それは、リソース解放ログイン時に取得しました:.zlogout

0

ssh-agent電話をかけないでください.zshenvlessおそらくそのオプションがPrezto(export LESS='-F -g -i -M -R -S -w -X -z-4'in .zprofile)によってカスタマイズされたために、コマンドがテキストファイルを表示しなくなりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.