2013年7月14日日曜日

rbenv install時に、.bashrcと.bash_profile動作の違いでつまずいた

MacOSXにて、複数versionのrubyを切り替えるツールとしてrvmを使っていましたが、rbenvに切り替える事にしました。
rbenv installの際つまずいたのですが、原因は「.bashrcと.bash_profileの動作の違いを理解していなかった」事でした。


詳細は下記の通りです。

  • 下記ブログを参考にさせていただきました
    Mountain Lion に rbenv を導入 - :soy_milk:
  • 上記ブログを参考に対応した場合、対応直後が正常にruby versionの切り替え実施できるのですが、MacBook再起動すると「rbenv globalコマンドでrubyのバージョンを変更しても、実際には変更できない」事象が発生しました。しかも、最初再起動時に発生した事に気づかず、「がちゃがちゃ設定をいじっている間に、rbenvの動作がおかしくなった」と思っていたため、原因の特定に時間がかかりました。
pochi-2:~ snumano$ rbenv versions
  system
* 1.9.3-p327 (set by /Users/snumano/.rbenv/version)
  2.0.0-p247
pochi-2:~ snumano$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]
pochi-2:~ snumano$ rbenv global 1.9.3-p327
pochi-2:~ snumano$ rbenv versions
  system
* 1.9.3-p327 (set by /Users/snumano/.rbenv/version)
  2.0.0-p247
pochi-2:~ snumano$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

  • 対応は下記どちらかを実施します。
    • 「.bashrc」の代わりに「.bash_profile」を指定する
    • もしくは、「.bash_profile」の最後に下記設定を加えておく。
source ~/.bashrc

  • 理由は下記の通り。今回の発生した事象は、後者になります。
    • .bashrcはbash起動時に読み込まれる
    • .bash_profileはログインシェルとして起動された時に読み込まれる   

久しぶりにshellの設定を触ったので、という言い訳で。。。

参考:
rbenvでRubyを複数バージョンインストールする
http://www.proton.jp/main/apps/bash.html
http://stackoverflow.com/questions/10940736/rbenv-not-changing-ruby-version
http://stackoverflow.com/questions/7780030/how-to-fix-terminal-not-loading-bashrc-on-os-x-lion

このエントリーをはてなブックマークに追加