シェルの設定ファイル読み込み順序についてメモ

bashrcとかbash_profileとかzshrcとかの話。

シェル起動時のプロファイルの読み込み時は大まかに『Interactive Shellかどうか』『Login Shellかどうか』によって分かれる。

bashzshの場合、以下のようなコマンドで挙動の確認ができる。
※ コマンドはbashで書いているが、zshも同様のオプション

  Login !Login
Interactive bash --login bash
!Interactive bash --login -c "" bash -c ""

 

ログを仕込んで実験してみたところ、bashzshでそれぞれ以下のようなログが得られた。

bash

# Login && Interactive
$ bash --login
/etc/profile
/etc/bash.bashrc
~/.bash_profile
~/.profile
~/.wsl_profile
~/.bashrc
~/.shrc
~/.wsl_shrc
~/.bash_aliases
~/.aliases
~/.wsl_aliases
# !Login && Interactive
$ bash
/etc/bash.bashrc
~/.bashrc
~/.shrc
~/.wsl_shrc
~/.bash_aliases
~/.aliases
~/.wsl_aliases
# Login && !Interactive
$ bash --login -c ""
/etc/profile
~/.bash_profile
~/.profile
~/.wsl_profile
# !Login && !Interactive
$ bash -c ""

zsh

# Login && Interactive
$ zsh --login
/etc/zsh/zshenv
~/.zshenv
/etc/zsh/zprofile
/etc/profile
~/.zprofile
/etc/zsh/zshrc
~/.zshrc
~/.shrc
~/.wsl_shrc
~/.zsh_aliases
~/.aliases
~/.wsl_aliases
~/.wsl_aliases:6: = not found
/etc/zsh/zlogin
~/.zlogin
# !Login && Interactive
$ zsh
/etc/zsh/zshenv
~/.zshenv
/etc/zsh/zshrc
~/.zshrc
~/.shrc
~/.wsl_shrc
~/.zsh_aliases
~/.aliases
~/.wsl_aliases
~/.wsl_aliases:6: = not found
# Login && !Interactive
$ zsh --login -c ""
/etc/zsh/zshenv
~/.zshenv
/etc/zsh/zprofile
/etc/profile
~/.zprofile
/etc/zsh/zlogin
~/.zlogin
# !Login && !Interactive
$ zsh -c ""
/etc/zsh/zshenv
~/.zshenv

 

詳細は後で。