Diary

Diary

日々学んだことをアウトプットする場として初めてみました

zshrcやzshprofileとその違い

zshrcやzshprofileとその違い

どちらもzshの設定ファイルであるが、呼び出される順番や使用シェルによって呼び出されるかどうかが若干違う

設定ファイル一覧

システム全体用 ユーザーごと
共通 ①/etc/zshenv ②~/.zshenv
ログインシェルの場合 ③/etc/zprofile ④~/.zprofile
インタラクティブシェルの場合 ⑤/etc/zshrc ⑥~/.zsshrc
ログインシェルの場合 ⑦/etc/zlogin ⑧~/.zlogin
ログアウト時 ⑨/etc/zlogout ⑩~/.zlogout
  • !①や②はシェルスクリプトの動作に影響を与える可能性があるため、注意!
  • 実際に実行されるのは?
    • ログインシェル:①〜⑧が順番に実行される
    • ログイン以外のインタラクティグシェル:①②⑤⑥が順番に実行される
    • ノンインタラクティグシェル:①②が順番に実行される
    • ログアウト時:⑨⑩が実行される

ログインシェルとは?

基本的に普通に開いたものはログインシェルだと思う

確認方法

  • $SHELLで確認する

環境変数$SHELLに保存されているものがログインシェル

$ echo $SHELL
/bin/zsh

であれば、zshがログインシェル

  • $0で確認する
$ echo $0
-zsh

のように、-(ハイフン)付きで表示されてたらログインシェル

以下のように、新たにシェルを立ち上げるとログインシェルではなくなり、ハイフンはなくなる

$ zsh
Restored session: 2021年 6月19日 土曜日 19時58分52秒 JST
$ echo $0
zsh
$ exit
Saving session...
...saving history...truncating history files...
...completed.