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公式のドキュメントの方はよくわからなかった……。どこかに書いてあるんだろうけれど。