日々感じたこととメモ書き


by kingrabbit
カレンダー
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

.bashrc と .bash_profile 結局どっちを使えばいい?

bash (Bourne-Again Shell) の設定ファイルについて。

ログインシェルをbashにしている場合、ログイン時に以下のような順番で設定ファイルが読み込まれる(らしい)。

 1. /etc/profile
 2. ~/.bash_profile (存在していれば)
 3. ~/.bash_login (存在していれば)
 4. ~/.profile (存在していれば)

一応書いておくと 「~/」 はユーザーのホームディレクトリの意味。
最初に読み込まれる /etc/profile はシステムの全ユーザーに適用されるので、各ユーザーの個人設定目的で編集してはいけない。

その次に読み込まれるのが ~/.bash_profile なので、パスを通す、エイリアスを定義する、といった個人設定には基本的に ~/.bash_profile を使えばいいみたい。

じゃあ ~/.bashrc は何のためにある?
~/.bashrc はプロセスとして bash を起動した時に読み込まれるファイル、つまりコマンドラインで
  $ bash
のようにして新しく bash を起動する度に毎回読み込まれるファイルだということ。

なので、~/.bash_profile と ~/.bashrc の使い分けは
  • ログイン時に一度設定すればいいものは ~/.bash_profile に
  • bashを起動するたびに設定する必要のあるものは ~/.bashrc に
ということになる。

個人的には tcsh に慣れているせいか .bashrc に色々書きたくなるということで、~/.bash_profile には

  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi

とだけ書いて、ログイン時に ~/.bashrc を読み込むようにしてる。
本来の bash の流儀から言ったら邪道かもしれないな。

この場合、~/.bashrc 内で例えば
  export PATH=/usr/local/bin:$PATH
と書いていると、サブシェルとして bash を起動する度に

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/X11R6/bin
$ bash
$ echo $PATH
/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/X11R6/bin
$ bash
$ echo $PATH
/usr/local/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/X11R6/bin

のようにパスが増えていく。害は無いと思うけど、冗長で好ましいことではないな。
 
その他に ~/.bash_logout という、ログインしたシェルを終了する(ログアウト)時に読み込まれるファイルを置くことができるらしいけど…使い道は思いつかない。

【参考】 bashの便利な機能を使いこなそう(@IT)
[PR]
by kingrabbit | 2012-03-01 12:22 | Mac関連