.zshenvと.zshrcの場所・違い・設定方法を解説します!


前提知識シェルは使い分けによって以下のような呼び方をする。


1. ログインシェル
* コマンドラインを起動したとき、サーバにログインしたときに立ち上がるシェルのこと
* 対話形式で入力する
2. インタラクティブシェル
* コマンドラインで bash とか zsh と入力すると起動するシェルのこと
* 対話形式で入力する
3. シェルスクリプト
* シェルによるプログラミングファイルを作成して実行すること

zsh 設定ファイルの種類

いきなり結論ですが、使う zsh 設定ファイルは基本的に 2 種類。

~/.zshenv と ~/.zshrc だけ使えば、ほとんどの場合 OK です!
※ ホームディレクトリに置かれた .zshenv と .zshrc という意味です


* ログインシェル、インタラクティブシェル、シェルスクリプト、どれでも常
* zsh が起動して、必ず最初に読み込まれる設定ファイル
* 対話形式のシェル設定をここですると、シェルスクリプト誤作動の原因になるため注意する
* 影響範囲が大きいので記述は必要最低限にするべき
* .zprofile
* ログインシェルに必要な設定だけを記述する
* zshenv の次に読み込まれる設定ファイル
* zsh ログイン時の一回だけ読み込まれる
* .zshrc
* ログインシェル、インタラクティブシェルの場合に読み込まれる
* .zlogin
* ログインシェルに必要な設定だけを記述する
* 最後に読み込まれる
* 役割は .zprofile とほぼ一緒。混乱を避けるため併用しないこと
* .zlogout
* exit コマンドで zsh を抜けたときに読み込まれる

設定ファイルを置く場所で優先度が変わる

置ける場所は 2 つ。
「ホームディレクトリ直下」もしくは「/etc 直下」です。

個人的な設定をしたファイルの配置場所は?
zsh の個人設定向けファイルは【ホームディレクトリ】に配置します。
あなたのホームディレクトリはどこなのか?…は環境変数 $HOME の中身を見ればわかります。
# ホームディレクトリの値を表示
~ % echo $HOME
/Users/tak
この「ホームディレクトリ」というものは ~ という記号でも表現できます。
ホームディレクトリに移動するには cd ~ もしくは、cd だけで OK です。


ホームディレクトリによく置かれる zsh 設定ファイル

ホームディレクトリ配下には、以下の zsh 設定ファイルが置かれることが多いです。

* ~/.zshenv
* ~/.zshrc

環境変数 $ZDOTDIR について
僕は正直この環境変数 $ZDOTDIR を使ったことはありませんが、
個人設定ファイルの場所を【ホームディレクトリから変更する】ことができます。

* ~/.zshenv の中に環境変数 $ZDOTDIR を定義する
* $ZDOTDIRに任意パスを設定する
* 設定したディレクトリ内の個人設定ファイルが適用されるようになる


汎用的な設定をしたファイルの配置場所は?
/etc ディレクトリ直下には、システム全体に影響を及ぼす汎用的な設定ファイルを置きます。

* 基本的に汎用設定が先に読み込まれます
* つまり後から読み込まれる「個人設定が優先」されます
* ただし .zlogout については、先に個人設定が読み込まれます
* つまり後から読み込まれる「汎用設定が優先」されます

/etc 配下によく置かれる zsh 設定ファイル
/etc 配下には、以下の zsh 設定ファイルが置かれることが多いです。


/etc 配下によく置かれる zsh 設定ファイル
/etc 配下には、以下の zsh 設定ファイルが置かれることが多いです。
* /etc/zshenv
* /etc/zprofile
* /etc/zlogin
* /etc/zlogout


いいなと思ったら応援しよう!