設定する場所をどのように選択しますか?

設定する場所をどのように選択しますか?

に含まれるべきものと含まれるべきではないことに関する情報を探していますzsh

私はこれらのファイルの元の順序と元の条件を理解していますが、各ファイルに何が必要なのかはまだわかりません。

答え1

以下は、各ファイルに含まれる内容を実行順にリストしたおおよそのリストです。

  1. .zshenvはいいつも源泉。通常、他のプログラムで使用できるエクスポートされた変数が含まれています。たとえば、、、およびはに設定されることがよくあり$PATHます。また、残りのzsh構成の代替場所を指定するように設定できます。$EDITOR$PAGER.zshenv$ZDOTDIR.zshenv
  2. .zprofileログインシェルに使用されます。前と後.zloginに得られた点を除いて、基本的には同じです。 zsh文書によると、.zshrc.zlogin.zshrc「kshファンのための代替案.zprofileとして設計されています.zlogin。2つを一緒に使用することを意図していませんが、必要に応じて確実に使用できます。」
  3. .zshrc対話型シェルに使用されます。setoptコマンドを使用して、対話型シェルのオプションを設定できますunsetopt。また、シェルモジュールのロード、履歴オプションの設定、プロンプトの変更、zle、完了の設定などもできます。対話型シェルでのみ使用される変数を設定することもできます$LS_COLORS
  4. .zloginログインシェルに使用されます。これはログインシェルの起動時に発生しますが、それ以降は発生しません(.zshrcシェルも対話型の場合)。このファイルは通常使用されますstartx。一部のシステムは起動時にXを起動するため、このファイルは必ずしも役に立ちません。
  5. .zlogout時には端末を消去してリセットするために使用されます。開いた時ではなく出てくる時に呼び出されます。

あなたは経験する必要があります任意のGithubユーザープロファイル各ファイルに何を含めるべきかをよりよく知ってください。

答え2

私の意見では、各ファイルに含めるべきものと含めてはいけないことのリストは次のとおりです。

.zshenv

【読むたびに】

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

しかし、ファイル単一のコマンドを実行するためにZshを起動しても読み取ることができます。(そして-氏オプション)またはmake標準コマンドのデフォルト動作を変更しないように注意してください。一部のツールが破損する可能性があるため(エイリアス設定など)。

.z 構成ファイル

[ログイン状態で読む]

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

  • ツールの設定に使用される環境変数(コンパイルフラグ、データフォルダの場所など)
  • SCONSFLAGS="--jobs=$(( $(nproc) - 1 ))"実行にはしばらく時間がかかる可能性があるため、設定コマンド(例:)を実行してください。

このファイルを変更した場合は、ログインシェルを実行して構成更新を適用できます。

exec zsh --login

.zshrc

[相互作用しながら読む]

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

  • 早く、
  • コマンドが完了しました。
  • コマンドの変更、
  • コマンドアドバイス、
  • コマンド強調、
  • アウトプットカラー、
  • ニックネーム、
  • キーバインディング、
  • コマンド履歴管理、
  • その他のインタラクティブツール(auto_cd、Manydots-magic)...

.zログイン

[ログイン状態で読む]

このファイルは似ています.zprofileが、後で読みます.zshrc。 .zloginが実行されたときにシェルが完全に設定されていると見なすことができます。

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

.zlogout

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

ここからログインしたときに設定された端末やその他のリソースを消去できます。

設定する場所をどのように選択しますか?

  • 必要に応じてコマンドは非対話型で実行されます。:.zshenv
  • もしそうならすべての新しいシェルから更新:.zshenv
  • コマンドを実行すると完了するにはしばらく時間がかかることがあります:.zprofile
  • もし関連があればインタラクティブな使用:.zshrc
  • もしあればシェルが完全に設定された後に実行するコマンド:.zlogin
  • その場合リソースの解放ログイン時に受け取る:.zlogout

答え3

覚えやすく簡単なソリューションを望む人のために私が使用して推奨する設定は次のとおりです(少なくともMac OSユーザーの場合)。

ここに画像の説明を入力してください。

  1. すべての共通項目をandに入れます.zshenv.bash_env残りの項目は空でなければならず、削除できます(シェルに固有のものでない限り、手順4を参照)。
  2. .zshenvとに同じコンテンツがあることを確認してください。.bash_env
  3. コンテンツを削除して.bash_env入れて、すべてを1か所に保管してください。
   if [ -f $HOME/.zshenv ]; then
           source $HOME/.zshenv
   fi
  1. (後で実行するとき).zloginシェルごとに上書きできるように作成されました。.bash_login.zshenv/.bash_env
  2. (オプション)一部のインストーラは自動的にコンテンツを作成して追加できるため、、を.zprofile監視します。.bash_profile.bashrc.zshrc

関連情報