zsh
のさまざまな起動ファイルに含めるべき、または含めるべきではないものについてのガイドラインを探しています。
私はこれらのファイルの調達の順序と、それらが供給される条件を理解していますが、それぞれに何をすべきかはまだはっきりしていません。
以下は、各ファイルに含まれる傾向のある非排他的なリストです。
.zshenv
は常にソースであるため、他のプログラムで使用できるエクスポートされた変数が含まれていることがよくあります。たとえば、$PATH
には$EDITOR
、$PAGER
、.zshenv
が設定されることがよくあります。また、$ZDOTDIR
に.zshenv
を設定して、残りのzsh構成の代替の場所を指定できます。.zshrc
はインタラクティブなシェル構成用です。 setopt
コマンドとunsetopt
コマンドを使用して、インタラクティブシェルのオプションを設定します。シェルモジュールの読み込み、履歴オプションの設定、プロンプトの変更、zleと補完の設定などもできます。インタラクティブシェルでのみ使用される変数も設定します(例:$LS_COLORS
)。.zlogin
は、ログインシェルの開始時に提供されます。このファイルは、Xをstartx
を使用して起動するためによく使用されます。一部のシステムは起動時にXを起動するため、このファイルは必ずしも非常に役立つとは限りません。.zprofile
は基本的に.zlogin
と同じですが、.zshrc
の直後ではなく直前にソースされる点が異なります。 zshのドキュメントによると、 ".zprofile
は、kshファンの` .zlogin 'の代替として意図されています。この2つを一緒に使用することは意図されていませんが、これは確かに必要に応じて実行します。」.zlogout
は、端末のクリアとリセットに使用されることがあります。各ファイルに何が含まれるべきかをよりよく理解するには、 ランダムなGithubユーザーの設定ファイル を実行する必要があります。
私の意見では、各ファイルに含める必要がある/含まないべきリストを以下に示します。
[毎回読む]
このファイルは常にソースであるため、頻繁に更新する必要がある環境変数を設定する必要があります。 [〜#〜] path [〜#〜](またはそれに対応するpath)良い例です。おそらくセッション全体を再起動して更新する必要はないでしょう。そのファイルに設定することにより、ターミナルエミュレーターを再度開くと、[〜#〜] path [〜#〜]値が更新された新しいZshインスタンスが開始されます。
ただし、Zshを起動して単一のコマンドを実行する場合でも、このファイルはreadであることに注意してください(-cオプション)、make
などの別のツールによっても。標準コマンドのデフォルトの動作を変更しないように十分に注意する必要があります(たとえば、エイリアスを設定することによって)一部のツールが壊れる可能性があります。
[ログイン時に読み取る]
私は個人的にそのファイルを_.zshenv
_のように扱いますが、一度設定する必要のあるコマンドや変数、または頻繁に更新する必要のないコマンド/変数については:
SCONSFLAGS="--jobs=$(( $(nproc) - 1 ))"
など)は、実行に時間がかかる場合があります。このファイルを変更する場合は、ログインシェルを実行して構成の更新を適用できます。
_exec zsh --login
_
[インタラクティブなときに読む]
interactive usageにのみ必要なすべてをここに配置します:
[ログイン時に読み取る]
このファイルは_.zprofile
_に似ていますが、_.zshrc
_の後に読み取られます。シェルは.zlogin実行時に完全にセットアップされていると考えることができます
そのため、シェルの動作を変更しない外部コマンド(ログインマネージャーなど)を起動するために使用します。
[ログアウト時に読み取る] [ログインシェル内]
ここで、端末またはログイン時に設定されたその他のリソースをクリアできます。
.zshenv
_.zshenv
_.zprofile
_.zshrc
_.zlogin
_.zlogout
_ssh-agent
に.zshenv
を呼び出さないでください。これにより、less
コマンドでテキストファイルが表示されなくなりました。おそらく、そのオプションがPreztoによってカスタマイズされたためです(export LESS='-F -g -i -M -R -S -w -X -z-4'
の.zprofile
)。