LoginSignup
3
3

More than 5 years have passed since last update.

bash 起動時の環境ファイルについて調べてみた

Posted at

$PATH に値を追加するのにどのファイルを触ればいいかちょっと迷ったので、ざっくり調べてみました。シェルの開始時に呼ばれるファイルを評価順に書いています。細かいファイルについては CentOS 7.2 の実装です。

会話型ログインシェルとして呼ばれた場合(コンソールとか)

(非会話型だけど --login オプションが指定された場合も同様)

  • /etc/profile - \$PATH 設定開始
    • (/etc/profile.d/*.sh)
      • /etc/profile.d/256term.sh -- 端末の256色対応
      • /etc/profile.d/colorls.sh -- ls に色を付ける alias 設定
      • /etc/profile.d/less.sh -- LESSOPEN 環境変数設定
      • /etc/profile.d/which2.sh -- which コマンドカスタマイズ用 alias 設定
      • /etc/profile.d/colorgrep.sh -- grep に色を付ける alias 設定
      • /etc/profile.d/lang.sh -- ロケール関連設定
      • /etc/profile.d/modules.sh -- bash モジュール設定(奥が深そう、、、)
      • /etc/profile.d/vim.sh -- vim 用の alias 設定
  • ~/.bash_profile (CentOS7 ではこれを採用。次項の2つはない)
    • ~/.bashrc -- \$PATH に \$HOME/bin を追加(一般ユーザーは \$HOME/.local/binも)
      • /etc/bashrc -- プロンプト設定や会話型端末用の微調整
  • ~/.bash_login(~/.bash_profile がない場合のみ)
  • ~/.profile (~/.bash_profile も ~/.bash_login もない場合のみ)

会話型だけどログインシェルではない場合(sshとか)

  • ~/.bashrc -- \$PATH に \$HOME/bin を追加(一般ユーザーは $HOME/.local/binも)
    • /etc/bashrc -- プロンプト設定や会話型端末用の微調整、PATH の初期設定
      • /etc/profile.d/*.sh -- (前述の通り)

会話型シェルではない場合(バッチ起動時)

  • BASH_ENV 環境変数の値をファイル名とみなして読み込む

本当はもっといろんな呼ばれ方のパターンがあるようですが、今回はこのへんで。

結論

$PATH に値を追加する場合、システムグローバルに適用する場合は /etc/profile.d/ 配下にファイルを追加、個人毎の適用の場合は ~/.bashrc に追記するのがよさそうな感じでした。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3