vorfee's Tech Blog

Just another tech blog

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が読み込むファイルは以下の順番で処理される。

  1. /etc/zshenv
  2. $ZDOTDIR/.zshenv
  3. /etc/zprofile
  4. $ZDOTDIR/.zprofile
  5. /etc/zshrc
  6. $ZDOTDIR/.zshrc
  7. /etc/zlogin
  8. $ZDOTDIR/.zlogin
  9. $ZDOTDIR/.zlogout
  10. /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の設定ファイルとして使用するにはsourceautoloadコマンドを使用する。

たとえば$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ファイルを作る。このファイルにはプロンプトの見た目をカスタマイズするための変数PS1PROMPTなどを書く。

$ZDOTDIR/.zcomp

zshの仕様にはない.zcompファイルを作る。このファイルにはzstyleで定義する補完(コンピレーション)を書く。

参照

http://zsh.sourceforge.net/Doc/Release/zsh.html

http://zsh.sourceforge.net/Doc/Release/Files.html