Top > Unix > bash

#contents

**設定ファイルが読み込まれる順番 [#ca2b66c1]

|~ |~ログイン|~対話非ログイン|~非対話|
|/etc/profile|○|×|×|
| ~/.bash_profile|○|×|×|
| ~/.bashrc|○|○|×|
|~順番|~ |~ログイン|~対話非ログイン|~非対話|
|1|/etc/profile|○|×|×|
|2| ~/.bash_profile|○|×|×|
|3| ~/.bashrc|○|○|×|

''[A] 対話的ログインシェル''
(1) /etc/profile(ディストリによって、この中で/etc/profile.d/*.shを読み込んでいる場合ある)
(2) ~/.bash_profile, ~/.bash_login, ~/.profile の順で見つかったもの1つだけ
      (普通は ~/.bash_profile の中で ~/.bashrc を読み込む)
      (CentOSなどでは ~/.bashrc の中で /etc/bashrc を読み込む)

''[B] 対話的非ログインシェル''
(1) ~/.bashrc

''[C] 非対話的シェル''
$BASH_ENV で指定されたファイル。何も指定されていなければ読み込まない


以上を確かめるには、各スクリプトの&color(Red){先頭};に
 echo '/etc/profile loaded'
などと書いておけばよい。~
スクリプトの中から他のスクリプトを読み込んでいるため、必ず先頭に書かないといけない。~
あるいは、
 $ bash --login -x     # 対話的ログインシェル
 $ bash -x -i          # 対話的非ログインシェル
 $ bash -x -c "pwd"    # 非対話シェル
のように -x つきで起動するという方法もある。

**ログインシェルかどうか調べるには(shopt) [#q5f6d4ef]
今使っているシェルがログインシェルかどうか調べるには
#pre{{
[ao@www etc:0]$ shopt|grep login_shell
login_shell     on
}}
または
 shopt -q login_shell
の戻り値を調べる。

    Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes