.bashrcや.bash_profileの読み込み順序がいまいち覚えられないので、まとめてみました。
bash起動時に読み込むファイル
シェルを起動する度に、環境変数やエイリアス、関数を定義するのは非効率で面倒です。
そのため、それらの定義を自動的に行うための設定ファイルが用意されています。
bashの設定ファイルには、下記のものがあります。
/etc/profile
:ログイン時に実行され、全ユーザーから参照される
.bash_profile
:ログイン時に実行される
.bash_login
:~/.bash_profileがない場合、ログイン時に実行される
.profile
:~/.bash_profile、~/.bash_loginがない場合ログイン時に実行される
.bashrc
:bash起動時に実行される
.bash_logout
:ログアウト時に実行される
/etcディレクトリ以下の設定ファイルは、全ユーザーに影響が及びます。
ホームディレクトリ以下の設定ファイルはユーザーごとの設定になります。
bash起動時における設定ファイルの実行順序
bashがログインシェルとして起動された場合、
最初に/etc/profileを読み込んで実行します。
続いて、.bash_profile
.bash_login
.profile
の順に
ファイルを探し、
最初に見つかったファイルを読み込んで実行します。
bash設定ファイルの使い分け
とにかく何でも .bash_profile にぶち込めばおk
とかいう風潮がありますが、正しいことではないので正しい使いどころをまとめた。
.bash_profile
.bash_profile はログイン時にのみ実行されます。
具体的な用途は
- 環境変数を設定する (export する変数)
環境変数はプロセス間で勝手に受け継がれるのでログイン時のみ設定すれば十分です。
.bashrc
.bashrc は対話モードの bash を起動する時に毎回実行されます。
具体的な用途は:
- 環境変数でない変数を設定する (export しない変数)
- エイリアスを定義する
- シェル関数を定義する
- コマンドライン補完の設定をする
これらは bash を起動する度に毎回設定する必要があるものです。