bashrcとかbash_profileとかzshrcとかの話。
シェル起動時のプロファイルの読み込み時は大まかに『Interactive Shellかどうか』『Login Shellかどうか』によって分かれる。
bashとzshの場合、以下のようなコマンドで挙動の確認ができる。
※ コマンドはbashで書いているが、zshも同様のオプション
Login | !Login | |
---|---|---|
Interactive | bash --login |
bash |
!Interactive | bash --login -c "" |
bash -c "" |
ログを仕込んで実験してみたところ、bashとzshでそれぞれ以下のようなログが得られた。
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
詳細は後で。