ログイン時に.bashrcが読み込まれなくなった
VAIO type PにUbuntu 11.10 Desktop 日本語Remixをインストールして、環境設定を行っていたところ、あるときからログイン後にlsがカラー表示されないようになってしまった。
lsのalias設定が読み込まれていないだけなのだが、その原因が何なのか調べてみた。
前後で行った作業で関係がありそうなものは、rvmのインストールで~/.bash_profileを作ったことだったので、これをリネームしてログインしてみたらalias設定された。直接の原因はこれだった。
RVM(Ruby Version Manager):複数バージョンのRubyを切り替えて使うためのツール
http://beginrescueend.com/rvm/install/
lsのalias設定は~/.bashrcに記述してあり、~/.profileから以下のように呼び出している。
# if running bash if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi
.bash_profileを追加すると.profileは読み込まれないのかと思って検索してみた。
bashの設定ファイルについての解説あり。
http://www.atmarkit.co.jp/flinux/rensai/theory09/theory09b.html
こちらは.bash_profileや.bashrcに関してもっと詳しく記述されている。
http://jo1upk.blogdns.net/linux/?Linux%2F%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E3%81%AE%E8%A8%AD%E5%AE%9A
ログイン時に~/.bash_profile⇒~/.bash_login⇒~/.profileの順に調べて、最初に見つけたものだけ読み込むようになっているようだ。
~/.profileを良く見直したらコメントに書いてあるし(´・ω・`)
# ~/.profile: executed by the command interpreter for login shells. # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login # exists. # see /usr/share/doc/bash/examples/startup-files for examples. # the files are located in the bash-doc package.
あと気になったのはbash起動時に~/.bashrcが読み込まれるならば、ログインシェルが/bin/bashなのだから~/.bashrcは必ず読み込まれるのではないかということ。
tmuxで新しいウィンドウを開くたびに~/.bash_profileだけ読み込まれて~/.bashrcは読み込まれない。コマンドラインでbashを実行すると~/.bashrcが読み込まれる。
この動きからすると「ログイン時1回だけ」、「シェル起動時毎回」より、以下の記述のほうが適切のような気がする。
- bash起動時に読み込むファイル
tty毎に初回 | ~/.bash_profile |
tty毎に2回目以降 | ~/.bashrc |
~/.bash_profileは以下のように変更した。
[[ -s "$HOME/.profile" ]] && . "$HOME/.profile" [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function