sudoじゃなくてrvmsudoを使うんだって!

$ sudo gem -v
sudo: gem: command not found
$ rvmsudo gem -v
2.0.8

理由

sudoはシェルを改めて開始するためrvm useされてない状態になるから駄目、という事らしい。その点rvmsudoはRVM+Rubyを使うための環境変数をちゃんと設定してくれるそうだ。

sudo starts a new subshell that not contains environment variables. rvmsudo passes on any environment variables that RVM set up to get you to the correct Ruby. This includes the $PATH as well has $GEM_HOME, $GEM_PATH and $BUNDLE_PATH variables.

実際sudoするとrubyが見つからなくなってる。

$ which ruby
/usr/local/rvm/rubies/ruby-2.0.0-p247/bin/ruby
$ sudo which ruby
$ rvmsudo which ruby
/usr/local/rvm/rubies/ruby-2.0.0-p247/bin/ruby

でも環境変数って引き継がれるような、いやでも色々とあるらしい。よくわかんない。

ソースどこよー

RVM公式のドキュメントの方はよくわからなかった……。どこかに書いてあるんだろうけれど。