概要
- ~/.zshrc にこれまであまり考えずに設定やプラグインを追加してきた
- zsh関連のファイルが他にもあることを知った
- どのファイルにどの情報を記載するのか気になったので調べたことをまとめる
参考資料:.zshenvと.zshrcの場所・違い・設定方法を解説します!
参考資料2:https://qiita.com/muran001/items/7b104d33f5ea3f75353f
シェルの呼称について
- シェルは使い分けによって以下のように分類される
1. ログインシェル
- ログイン時に起動するシェル
2. インタラクティブシェル
- ログインシェルから起動されるシェルでユーザと対話が可能なシェル
3. シェルスクリプト
- OSを操作するためのシェル上で実行できるプログラミング言語によって書かれた簡易的なプログラム
- 参考
設定ファイルの種類
1. .zshenv
- ログインシェル、インタラクティブシェル、シェルスクリプト、どれでも常に必要な設定を定義する
- どの場合でも必要な環境変数などはここに記述する
- 影響範囲が広いので設定する内容は最小限にすべき
2. .zprofile
- ログインシェルの場合に1度だけ読み込まれる
- ログインシェルに必要な情報のみを記載する
3. .zshrc
- ログインシェル、インタラクティブシェルの場合に読み込まれる
- zprofileの内容でインタラクティブシェルに必要だがシェルスクリプトには不要な情報を記載する
4. .zlogin
- ログインシェルの場合に1度だけ読み込まれる
- .zprofileとは読み込み順が異なる
- .zprofileとの併用を避けたほうが無難
5. .zlogout
- exitコマンドでzshを抜けたときに読み込まれる
設定ファイルの格納場所
- 設定ファイルの格納場所によって読み込み順序が異なる
1. ~/ (local)
- 自分が個別に設定したい内容をここに置く
- localはglobalを上書きするので全体より自分の設定が優先される
- ~については
$ZDOTDIR
が設定されていればそのディレクトリ、なければホームディレクトリをさす
2. etc/ (global)
- すべてのユーザーで有効にしたい設定についてはここにあるファイルに設定する
- globalはlocalに上書きされる
使用するシェルによる読み込みファイルと順序
- それぞれ global > local の順に読まれていく
[1. ログインシェル](# 1. ログインシェル)
- zshenv > zprofile > zshrc > zloginの順
[2. インタラクティブシェル](# 2. インタラクティブシェル)
- zshenv > zshrcの順
[3. シェルスクリプト](# 3. シェルスクリプト)
- zshenvのみ
4. ログアウトするとき
- ログアウト時のみlocal > globalになる
- ~/.zlogout > etc/.zlogout
応用
zsh関連ファイルの量が多く、読み込み時に時間がかかるとき
- 設定ファイルをコンパイルできる
- コンパイルしてできる
.zshrc.zwc
はzshで自動で読み込まれるようになっている
zcompile ~/.zshrc
まとめ
- 参考資料がすごく整理されていたのでわかりやすかった
- 設定ファイルは複数あり、シェルの使用用途によって読まれるファイルが異なることが分かった
- 今まで何となく.zshrcに設定していたのはログインシェルとインタラクティブシェルの両方に設定でき、且つ.zshenvより影響範囲の少ないということで.zshrcに設定していたことが分かった