かきすて

正しいかどうかよくわからない知識をよくわからないままとりあえず公開してみようというコンセプトで運営しています。

sudoのときだけrvmで入れたrubyを使ってくれない

sudoのときだけrvmで入れたrubyじゃなくてもとから入ってた/usr/bin/rubyを使うのでgemを入れるとき困った。

$ ruby -v
ruby 1.9.3p545 (2014-02-24 revision 45159) [i686-linux]
$ sudo ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [i386-linux]
	
$ which ruby
/usr/local/rvm/rubies/ruby-1.9.3-p545/bin/ruby
$ sudo which ruby
/usr/bin/ruby

原因

sudoのとき$PATHが引き継がれてなかった。
以下のページの通りにして解決。

$ sudo visudo

を叩いて、

Defaults    env_keep +=  ほにゃららら

が書いてある行を探そう。
それらの直下に

Defaults    env_keep +=  "PATH"

を追加し、

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
↓
# Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

コメントアウトすれば、PATHが通るようになります。

CentOS で sudo 時に実行ユーザーのPATHを引き継ぐ - Qiita