LPICで勉強したことを忘れそうなので復習としてご紹介します。
多くのLinuxディストロで標準になっているであろうbashですが、設定ファイルが複数存在するほか、シェルの種類によって読み込むファイルや順番が異なります。
順番の前にシェルの種類について。
ログインシェル、非ログインシェル:
ログインシェルはログイン時に起動するシェルです。--loginオプションを付けることで起動することもできます。
一方非ログインシェルは、ログインシェルから$bashなどで起動することが出来ます。Windowsで例えるとデスクトップ画面からコマンドプロンプトを起動するイメージが近いでしょうか。
インタラクティブモード、ノンインタラクティブモード:
インタラクティブ(対話)モードのシェルは標準入出力がキーボード/モニターに接続されています。コマンドを入力して結果を表示するといったようなことが可能です。
↑の(非)ログインシェルの例はどちらもインタラクティブモードといえます。
ノンインタラクティブ(非対話)モードのシェルはスクリプトの実行時などに呼び出されます。非対話なのでスクリプトの実行が終わると自動で終了します。
そして設定を読み込む順ですが
ログインシェル:
/etc/profile
↓
(/etc/bash.bashrc)※Debian系のみ
↓
~/.bash_profile
↓
(~/.bash_login)※.bash_profileが存在しなかった場合読み込み
↓
(~/.profile)※.bash_profileも.bash_loginも存在しなかった場合読み込み
↓
(~/.bashrc)※対話モードで起動した場合読み込む
インタラクティブな非ログインシェル:
(/etc/bash.bashrc)※Debian系の場合
↓
~/.bashrc
↓
(/etc/bashrc)※存在する場合
ノンインタラクティブモードの場合は何も読み込みません。
それぞれの内容については、
profileには主に環境変数を設定し、
bashrcにはエイリアスやシェル変数などを設定します。
大抵の設定はbashrcに書いておけば何とかなるらしいです。真偽のほどは不明ですが。
また、すべてのユーザーに適応したい設定は/etc以下に、個々に設定したい場合にはホームディレクトリ以下に記述しておくのがいいでしょう。
参考URL:
https://qiita.com/ikkyu193/items/5c9a87b22fdf7697422e