何を今更、というようなタイトルだけど、どういうことかというと、今までランチャーから新しい端末(コンソール)を起動しただけでは rvm でインストールした Ruby 2.1.1 を使えていなかったのだ。なぜなら、rvm を有効にする設定が .bash_profaile に書かれているのに対して、新しい端末を開いてもこのファイルを読み込まないらしい、からだった。
だから、今までどうしていたかというと、端末を開いたあとに、source .bash_profile
とか bash --login
とかやってたわけだ。さすがにこれはめんどくさい(実際には端末を開きっぱなしなのでそれほどでもない)。そこで、重い腰を上げて解決することにした。
いろいろ調べてみると、新しい端末を開くと、.bashrc は読み込んでくれるらしい。ということは、.bash_profile に書いてある該当箇所を .bashrc に書き写せばいいはず。.bash_profile の該当箇所はこれ。
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
ところが、これをこのまま .bashrc に書き写しても動かない。どうしてかというと、Ubuntu の sh は bash じゃなくて dash というシェルだから。
takatoh@nightschool $ which sh /bin/sh takatoh@nightschool $ ls -al /bin/sh lrwxrwxrwx 1 root root 4 7月 5 14:26 /bin/sh -> dash
どうも dash では [[ … ]] という書式をサポートしていないらしい。というわけで、.bashrc の他の記述を参考に次のように書き換えた。
if [ -s "$HOME/.rvm/scripts/rvm" ]; then source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function* fi
これで、新しい端末で最初から Ruby 2.1.1 が使えるようになった。
takatoh@nightschool $ ruby -v ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-linux]