MacOS Catalinaにアップグレードしたところ、新しいシェルはZSHです。ですから、これは新たなスタートなので、bashの場合と同じように、エイリアスや関数などを使用してシェル環境をセットアップしようとしています。 documentation でこれに遭遇したとき、私は何がどこに行くのかを理解しようとしています
次に、コマンドは
$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
の違いを理解するのに役立つでしょう。したがって、ここでのガイダンスはすばらしいでしょう。
*profile
ファイルと*login
ファイルは、同じ条件で読み取られます。シェルがログインシェルである場合(およびno_rcs
などのオプションで呼び出されない場合)のみです。 *rc
ファイルとは異なる順序で呼び出されるため、マニュアルにはそれらが個別にリストされています。
*profile
という名前はsh
に由来し、 Bourne Shell (ksh、bash、dashなどはほとんどが追加機能を備えた再実装です)。 *login
という名前は csh に由来します。 Zshはshに似ていますが、両方の機能を備えているため、両方の名前をサポートしているのではないかと思います。
多くの場合、*profile
と*login
のどちらを使用してもかまいません。ただし、*profile
ファイルには*rc
の前に読み取られるという利点があるため、*rc
の設定に依存する*profile
コンテンツがある場合(たとえば、.zshrc
の場合SOMECODE] _は、.zprofile
が$PATH
に追加するディレクトリにあるプログラムを呼び出します。*profile
ではなく*login
を使用する必要があります。
したがって、ログイン時の構成(通常はほとんどの場合環境変数)を~/.profile
に入れ、対話型の構成(プロンプト、完了、キーバインディング、エイリアスなど)を~/.zshrc
に入れます。他のスタートアップファイルが必要になることはめったにありません。