[Home] / 教授でもできる... / bash setup / .bash_profile

.bash_profileと .bashrcの設定

「教授でも...」では、.bash_profileと.bashrc を次のように設定しています。

1. ~/.bashrc の設定

よく変更する環境変数やaliasは ~/.bashrc というファイルを編集して設定します。
たとえば:

alias ts="open -a TeXShop"
PS1="\h:\W\$ "
export HOGE=hogehoge
	   		

2. PATHの変更

Terminalやxtermからコマンドを打つと、PATHという環境変数に入っているdirectoryを左端から順にたどり、初めて見つかったコマンドを 実行します。 もし将来、あるdirectoryをPATHに加えるには、~/.bash_profile の中で追加します。 たとえば、~/mybin というdirectoryを追加する場合は、~/.bash_profileというファイルを編集し、その中に次の行を書きます。

export PATH = ~/mybin:${PATH}
	   		

変更したPATHを有効にするには、次のいずれかを行ないます。

3. 上のように設定する理由 - Terminal, xtermと.bash_profile, .bashrcの関係

Terminalとxtermでは、新たなウィンドウを開いたときに実行される初期設定ファイルが次のように異なります。

プログラム初期設定ファイル実行時
Terminal/etc/profile~/.bash_profile Terminalの新たなwindowやtabが開かれた時
X11/etc/profile~/.bash_profile X11のアプリケーションが立ち上がった時
xterm~/.bashrc xtermの新たなwindowが開かれた時

Terminalは、新たなwindowやtabが開かれる度に、/etc/profile, ~/.bash_profileを実行します。 それに対してxtermは/etc/profileや ~/.bash_profileを実行せずに、 単にxtermを開く親の環境を引き継いで、~/.bashrcを実行します。 例えばX11のアプリケーションからxtermを開くと、X11を立ち上げた時に/etc/profile, ~/.bash_profileを実行して 得られた環境変数を引き継ぎます。 Terminalから" xterm& "と打つと、立ち上がったxtermはその時のTerminalで設定されている環境変数を引き継ぎます。

いずれにせよ、開く度に実行されるユーザのファイルが、Terminalでは~/.bash_profile、xtermでは~/.bashrcと、二つで異なります。 そこで、どちらを使っても同じ環境が得られるように、ユーザによる設定は .bashrc にまとめます。 そして、Terminalの新たなwindowやtabが開かれた時のみ、~/.bash_profileから~/.bashrcを実行するようにしたのが、 .bash_profileに入れた次の5行です。

if [ "$TERM_PROGRAM" = "Apple_Terminal" ]; then
    if [ -f ~/.bashrc ]; then
        source ~/.bashrc
    fi
fi
	   			

PATHの変更をもし.bashrcの中ですると、例えばTerminalやxtermから" xterm& " と打ってxtermを立ち上げたときに ~/.bashrcが再び実行され、PATHの変更が2回重複して行なわれてしまいます。

以下、メモ



2013-12-10 Taku Yamanaka (Osaka Univ.)