概要
macOS で zsh を使っているが、.zshenv
や .zshrc
などの違いをちゃんとわかっていなかったので(調べてもすぐに忘れてしまい、その都度ググって調べてしまうので)、簡単にまとめた内容をメモとして残しておく。
まとめ
zsh の設定ファイルは5種類ある。
.zshenv
.zprofile
.zshrc
.zlogin
.zlogout
ログインシェル、インタラクティブシェル、シェルスクリプト、ログアウト(ログインシェル終了時)で使うファイル、使わないファイルがある。
読み込み順がある。
ホームディレクトリに置いておくものだと思ったが、$ZDOTDIR という環境変数とそれに対応するディレクトリを用意しておくと、そちらを読み込みにいってくれるらしい。
$ZDOTDIR を用意するほうがホームディレクトリが多少スッキリしてよさそう。
If ZDOTDIR is unset, HOME is used instead.
global と local ファイルがあり、global は
/etc~
に存在する。個人 PC だけなら、local ファイル(ホームディレクトリ、もしくは $ZDOTDIR に用意したファイル) だけを修正するのでよさそう。
サーバーで使うときに、global のファイルを修正することがありそう。
ログアウト以外では、global -> local の順に読み込まれるので、local が優先されることに注意。
実際に各ファイルに echo を記述して確認するとわかりやすかった。
各ファイルの簡単な説明
.zshenv
ログアウト以外で読み込まれ、どれも最初に読み込まれる。
一番影響範囲が広いので、いきなりここに記述するのはよくない。
.zprofile
ログインシェルの場合だけ読み込まれる。
.zshrc
ログインシェルとインタラクティブシェルの場合だけ読み込まれる。
.zlogin
ログインシェルの場合だけ読み込まれる。
.zprofile
-> .zshrc
の後に読み込まれることに注意。
.zprofile
か .zshrc
を使えばいいと思ったので、あまり使う機会はなさそう?
個人的には使ったことがない。
.zlogout
exit または logout でログインシェルを終了したときだけ読み込まれる。
個人的には使ったことがない。
When a login shell exits, the files $ZDOTDIR/.zlogout and then /etc/zlogout are read. This happens with either an explicit exit via the exit or logout commands, or an implicit exit by reading end-of-file from the terminal. However, if the shell terminates due to exec’ing another process, the logout files are not read.
(Google翻訳)
ログインシェルが終了すると、ファイル $ZDOTDIR/.zlogout と /etc/zlogout が読み取られます。これは、exit または logout コマンドによる明示的な終了、または端末からファイルの終わりを読み取ることによる暗黙的な終了のいずれかで発生します。ただし、別のプロセスを実行したためにシェルが終了した場合、ログアウト ファイルは読み取られません。