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
。その他の起動ファイルが必要になることはほとんどありません。