自由帳

とりとめのない学習メモです。主に Web サービスのシステム基盤や運用に関することを書いています

zsh の設定ファイルに関するメモ

何となく .zshrc にまとめていたけど、どのファイルがどういう順番で読み込まれるのかわかってなかったので調べたメモ。

ドキュメントもある。

man zsh でも見れる

設定ファイル一覧

すると、設定ファイルには以下があることが書かれている。

$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
${TMPPREFIX}* (default is /tmp/zsh*)
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin
/etc/zlogout (installation-specific - /etc is the default)

$ZDOTDIR はデフォルトだと $HOME っぽい。

読み込み順

/etc/zshenv が最初に読み込まれ上書き不可らしい。(自分のmacOS Catalina ではファイルは存在せず Ubuntu 20.04 では /etc/zsh/zshenv があった)

続いて、 $ZDOTDIR/.zshenv が読み込まれる。

続いて、ログインシェルの場合は /etc/zprofile -> $ZDOTDIR/.zprofile が読み込まれる。

続いて、インタラクティブシェルの場合は /etc/zshrc -> $ZDOTDIR/.zshrc と読み込まれる。

最後に、ログインシェルの場合、/etc/zlogin$ZDOTDIR/.zlogin が読み込まれる。

ログインシェルが終了すると、 $ZDOTDIR/.zlogout -> /etc/zlogout が読み取られる。

設定場所

普通にログインユーザーとして読み込ませたい場合は ~/.zshrc に書いておけば良さそうに思われる。 細かく分けたい場合は、 /etc/zprofile, $ZDOTDIR/.zprofile環境変数設定とかを書けば、スクリプト実行時に使われるようになる。 全ユーザーに適用させたい場合は /etc/z* に書く感じになりそう。 /etc/.zshenv, $ZDOTDIR/.zshenv は常に呼び出されるみたいなので、最小限の設定に留めておくのが良さそう。