bash起動時に「~/.profile」が読み込まれない → 解決

bash起動時に「~/.profile」が読み込まれなくなったときの原因と対処法をメモ。

Mac OS Xでパッケージ管理ツール「MacPorts」をインストールした時のこと。「~/.profile>」にMacPorts関連のコマンドにPATHを通すための記述がされているはずなのに、うまくPATHが通らないという状況に遭遇してしまいました。

結論から言うと、原因は「~/.bash_login」が存在していたから

man bashによると、どうやらbashは、起動時に「~/.bash_profile」「~/.bash_login」「~/.profile」の順でファイルを探索し、一連のファイルの中で最初に見つけたファイルの内容だけを読み込むみたい。

以下、man bashからの引用。

When bash is invoked as an interactive login shell, or as a non-inter-
active shell with the –login option, it first reads and executes com-
mands from the file /etc/profile, if that file exists. After reading
that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile,
in that order, and reads and executes commands from the first one that
exists and is readable. The –noprofile option may be used when the
shell is started to inhibit this behavior.

今回の僕の場合、RVM(Ruby Version Manager)をインストールした時に「~/.bash_login」が生成されていて、そのせいで「~/.profile」が読み込まれない状態になっていたみたい。

~/.profile」に書かれている内容を、そのまま「~/bash_login」に移動して問題を解決しました。

細かい仕様ですがよく理解しておかないと、肝心なときにはまってしまいそうですね。今知れてよかったです。

どこかの誰かのお役にたてば。それでは!