zshが起動時に読み込むファイルとその内容について
zshには10種類の設定ファイルがある。これらをどのように使えばよいのかをメモ。
zshが起動時に読み込むファイル
ログインシェル起動時
/etc/zshenv $ZDOTDIR/.zshenv /etc/zprofile $ZDOTDIR/.zprofile /etc/zshrc $ZDOTDIR/.zshrc /etc/zlogin $ZDOTDIR/.zlogin
インタラクティブシェル起動時
/etc/zshenv $ZDOTDIR/.zshenv /etc/zshrc $ZDOTDIR/.zshrc
ログアウト時
/etc/zlogout $ZDOTDIR/.zlogout
ファイルを読み込む順番
zshが読み込むファイルは以下の順番で処理される。
/etc/zshenv
$ZDOTDIR/.zshenv
/etc/zprofile
$ZDOTDIR/.zprofile
/etc/zshrc
$ZDOTDIR/.zshrc
/etc/zlogin
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
/etc/zlogout
各ファイルの使用法
べつに決まった使い方があるわけではない。
自分の好きなように使えばよいが、ある程度の「お約束」があるようなのでメモする。
/etc/zshenv
/etc/zshenv
はすべてのユーザーがログインシェルとインタラクティブシェルで最初に読み込む。
システム全体に影響するので何も書き込むべきではない。
$ZDOTDIR/.zshenv
$ZDOTDIR/.zshenv
は/etc/zshenv
の適用範囲を縮小したもので、自分のみが使用する。
このファイルでは環境変数を設定するべきである。
/etc/zprofile
/etc/zprofile
はすべてのユーザーがログインシェルで読み込む。
システム全体に影響するので何も書き込むべきではない。
ただし、すべてのユーザーにMOTD(message of the day)を表示したい場合はこれを使うとよい。
$ZDOTDIR/.zprofile
$ZDOTDIR/zprofile
は/etc/zprofile
の適用範囲を縮小したもので、自分のみが使用する。
特に用途はない。
/etc/zshrc
/etc/zshrc
はすべてのユーザーがログインシェルとインタラクティブシェルの両方で読み込む。
システム全体に影響するので何も書き込むべきではない。
$ZDOTDIR/.zshrc
$ZDOTDIR/zshrc
は/etc/zshrc
の適用範囲を縮小したもので、自分のみが使用する。
このファイルではzshを使用する上で必要な設定すべてを記入するべきである。
このファイルはごった煮状態になりやすいので、私は複数ファイルに分割している。方法はのちほど。
/etc/zlogin
/etc/zlogin
はすべてのユーザーがログインシェルで最後に読み込む。
システム全体に影響するので何も書き込むべきではない。
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogin
は/etc/zlogin
適用範囲を縮小したもので、自分のみが使用する。
$ZDOTDIR/zshrc
によるzshの設定が完了したあとに読み込まれるため、さまざまな応用が可能なファイルである。
が、私にはうまい使い方が思いつかなかった。
/etc/zlogout
/etc/zlogout
はすべてのユーザーがログアウト時にに読み込む。
システム全体に影響するので何も書き込むべきではない。
$ZDOTDIR/.zlogout
$ZDOTDIR/.zlogout
は/etc/zlogout
適用範囲を縮小したもので、自分のみが使用する。
ログアウトの時にのみ実行したいことといえばSIGHUP
の送信だろう。
バックグラウンドで動作しているプロセスがあるのを忘れてログアウトしようとしたときにSIGHUP
の送信を聞いたりするとよいかもしれない。
zshrcの分割管理
zshrcの個人的な使用方法について述べる。
zshの設定を分割する
名前の定義されていないファイルをzshの設定ファイルとして使用するにはsource
かautoload
コマンドを使用する。
たとえば$ZDOTDIR/.myZshSetting
を読み込ませたいときには以下のようにする。
source "$ZDOTDIR/.myZshSetting"
autoload
は遅延読み込みできるが、設定ファイルは即時実行・反映してほしいものなので使うべきではないかもしれない。
自分だけの設定ファイルを作成する
自分で考え、適切だと思う分割方法で設定ファイルを作成する。
$ZDOTDIR/.zoptions
zshの仕様にはない.zoptions
ファイルを作る。このファイルにはsetopt
もしくはset
コマンドで設定するzshのオプションを書く。
$ZDOTDIR/.zaliases
zshの仕様にはない.zaliases
ファイルを作る。このファイルにはzshで使用するエイリアスを書く。
$ZDOTDIR/.zplugins
zshの仕様にはない.zplugins
ファイルを作る。このファイルにはzshに読み込ませるモジュールやプラグインをautoload
で読み込ませて書く。
$ZDOTDIR/.zprompt
zshの仕様にはない.zprompt
ファイルを作る。このファイルにはプロンプトの見た目をカスタマイズするための変数PS1
やPROMPT
などを書く。
$ZDOTDIR/.zcomp
zshの仕様にはない.zcomp
ファイルを作る。このファイルにはzstyle
で定義する補完(コンピレーション)を書く。