ZSH の起動/シャットダウン ファイルに関する説明

ZSH の起動/シャットダウン ファイルに関する説明

macOS Catalinaにアップグレードしたばかりで、新しいシェルはZSHです。新しく始めるので、bashで使っていたように、エイリアスや関数などを使ってシェル環境を設定しようとしています。どこに何があるのか​​理解しようとしているときに、ドキュメンテーション

次に、コマンドは から読み取られます$ZDOTDIR/.zshenv。シェルがログイン シェルの場合、コマンドは から読み取られ、/etc/zprofile次に から$ZDOTDIR/.zprofile読み取られます。次に、シェルが対話型の場合、コマンドは から読み取られ/etc/zshrc、次に から読み取られます$ZDOTDIR/.zshrc。最後に、シェルがログイン シェルの場合、/etc/zloginおよび が$ZDOTDIR/.zlogin読み取られます。

混乱する部分...

  • /etc/zprofileログインシェルの場合は、そこから読み込み、$ZDOTDIR/.zprofile
  • 最後に、シェルがログイン シェルである場合は、/etc/zloginおよびが$ZDOTDIR/.zlogin読み取られます。

Mac に SSH で接続すると、ログイン シェルになります。そのため、これを設定する必要があるので、どのファイルを変更する必要がありますか (または変更する必要がありますか)? この質問に答えるには、との違いを理解することが役立つと思います。.zprofileその.zloginため、ここでのガイダンスは素晴らしいと思います。

答え1

ファイル*profile*loginファイルは、シェルがログイン シェルである場合 (および などのオプションで呼び出されていない場合no_rcs) にのみ、同じ条件で読み取られます。これらはファイルに対して異なる順序で呼び出されるため、マニュアルでは別々にリストされています*rc

名前*profileの由来はshボーンシェル(ksh、bash、dashなどは主に機能追加を伴う再実装です)。名前*loginの由来はシェルZsh は sh に似ていますが、両方の機能を備えているため、両方の名前をサポートしているのだと思います。

*profile多くの場合、と のどちらを使用するかは問題ではありません*login。ただし、*profileファイルには の前に読み込まれるという利点があるため、の設定に依存するコンテンツ*rcがある場合(たとえば、 がに追加するディレクトリ内のプログラムを呼び出す場合)、ではなく を使用する必要があります。*rc*profile.zshrc.zprofile$PATH*profile*login

したがって、ログイン時の設定 (通常は主に環境変数) は に~/.profile、対話型の設定 (プロンプト、補完、キー バインディング、エイリアスなど) は に配置します~/.zshrc。その他の起動ファイルが必要になることはほとんどありません。

関連情報