ねこ元帥の中の人@リウマチ

日々の覚書など。ブログ名はオンラインゲームのアカウント名をいつも「ねこ元帥」にしているから。そして、2013年11月リウマチと診断されたとです。(2012年11月から時々手足に原因不明の痛みが発生、2013年9月以降は足の痛みが常態化、2013年12月30日からMTX服用開始、4月過ぎるころにはわずかの痛みが残る程度まで回復して現在に至る。)

ログイン時に.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