zshrcとzprofileについて
あるとき.zprofile
というファイル名を見かけて、そんなファイルあるのかなと疑問に思い、自分のターミナルで調べたら確かにあった。
中身を見たら、nodeのPATHだけ書いてあった。
export PATH=$HOME/.nodebrew/current/bin:$PATH
前にrbenvをインストールしたときは.zshrc
にPATHを追加したので、
nodeも.zshrc
に書いたと思ったら.zprofile
にPATHを書いていた。
記事をいくつか見ると.zshrc
に書くパターンと.zprofile
に書くパターンの半々。
どっちに書けばいいんやら.....
使い分けは?
bashの記事引用、
.bash_profile
基本的に デフォルトのまま一切いじらない
端末操作以外でも設定しておく必要がある環境変数のみ設定する
.bashrc
.bash_profileに書いた設定以外はすべてここに書く
ほとんどの人は、 設定は全部.bashrcに書けば良い
zshの記事でも
zprofile
ログインシェルの場合に1度だけ読み込まれる。
つまりインタラクティブシェルやシェルスクリプトでは不要だけどログインシェルの時だけ必要な設定をする場合にはここに記述するのが良い。
zshrc
ログインシェルとインタラクティブシェルの場合だけ読み込まれる。
シェルスクリプトでは不要な場合に記述する。
一般的に紹介されている記事ではこの設定ファイルにいろいろ記述することが多い。
困ったらここに記述してみて問題が出てきたらちゃんと場所を考えるという運用でも問題ないかもしれない。
ということらしい。
以上を参考にして、上記のnodeのPATHも.zshrc
に書き換えたが問題なくnode.jsは動いた。
$PATHを見ても通ってる。
~ % echo $PATH /Users/gallardo/.nvm/versions/node/v14.12.0/bin:/Users/gallardo/.rbenv/shims:/Users/gallardo/.rbenv/bin:/Users/gallardo/.nodebrew/current/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
詳細
それぞれの違いは?
- シェルの種類
1・ログインシェル コマンドラインを起動したとき、サーバにログインしたときに立ち上がるシェルのこと 対話形式で入力する 2・インタラクティブシェル コマンドラインで bash とか zsh と入力すると起動するシェルのこと 対話形式で入力する 3・シェルスクリプト シェルによるプログラミングファイルを作成して実行すること
- 役割
.zshenv ログインシェル、インタラクティブシェル、シェルスクリプト、どれでも常に必要な設定を定義する zsh が起動して、必ず最初に読み込まれる設定ファイル 対話形式のシェル設定をここですると、シェルスクリプト誤作動の原因になるため注意する 影響範囲が大きいので記述は必要最低限にするべき .zprofile ログインシェルに必要な設定だけを記述する zshenv の次に読み込まれる設定ファイル zsh ログイン時の一回だけ読み込まれる .zshrc ログインシェル、インタラクティブシェルの場合に読み込まれる .zlogin ログインシェルに必要な設定だけを記述する 最後に読み込まれる 役割は .zprofile とほぼ一緒。混乱を避けるため併用しないこと .zlogout exit コマンドで zsh を抜けたときに読み込まれる