目の前に僕らの道がある

勉強会とか、技術的にはまったことのメモ

zshの設定ファイルの読み込み順番のメモ

コレをちゃんと覚えていなくてはまったので、ちょっと自分メモ

確認環境はこんな感じです。Ubuntu 12.04 LST 64bitです。

[ LOCAL(l) ] masasuzu@henry% zsh --version
zsh 4.3.17 (x86_64-unknown-linux-gnu)
[ LOCAL(l) ] masasuzu@henry% uname -a
Linux henry 3.2.0-24-generic #37-Ubuntu SMP Wed Apr 25 08:43:22 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

読み込まれるファイルと順番

本当は/etc/zsh/以下の設定ファイルも読み込まれるのですが、そこは基本的にデフォルトのままなので、今回は気にしていないです。

ログインシェルでzshを起動した時
  1. ~/.zshenv
  2. ~/.zprofile
  3. ~/.zshrc
  4. ~/.zlogin
インタラクティブシェルでzshを起動した時
  1. ~/.zshenv
  2. ~/.zshrc
シェルスクリプトとしてzshを起動した時
  1. ~/.zshenv
ログアウトする時
  1. ~/.zlogout

実験

下記のそれぞれの設定ファイルでファイル名をechoするようにしてます。

  • ~/.zlogin
  • ~/.zshrc
  • ~/.zshenv
  • ~/.zprofile
  • ~/.zlogout
GUIからターミナルを起動する
zshenv
zshrc
[ LOCAL(i) ] masasuzu@henry% 
zshコマンドで起動する
[ LOCAL(i) ] masasuzu@henry% zsh
zshenv
zshrc
[ LOCAL(i) ] masasuzu@henry% exit
[ LOCAL(i) ] masasuzu@henry% 
sshでログインする

ちゃんと.zlogoutが読み込まれているのが確認できます。
ちなみにログインシェルとインタラクティブシェルでプロンプトを変えています。

[ LOCAL(i) ] masasuzu@henry% ssh localhost
zshenv
zprofile
zshrc
zlogin
[ LOCAL(l) ] masasuzu@henry% logout
zlogout
Connection to localhost closed.
[ LOCAL(i) ] masasuzu@henry%  
screenから起動する

ふーむどうやらログインシェル扱いされているみたいですね。

zshenv
zprofile
zshrc
zlogin
[ LOCAL(l) ] masasuzu@henry%  
シェルスクリプトzshを実行する

読み込まれるのは.zshenvだけです。

[ LOCAL(i) ] masasuzu@henry% cat hoge.sh
echo "shell"
[ LOCAL(i) ] masasuzu@henry% zsh hoge.sh
zshenv
shell