pirosikick's diary

君のハートにunshift

sudo時のPATH(CentOS5.5)

うえちょこ@ぼろぐ» [Linux]CentOS 5.3/5.4のsudoコマンドが曲者。

CentOS5.5では、デフォルトで、sudoを実行したユーザのPATHが引き継がれないようです。この現象のおかげで、npmのインストールの際にnodeを見つけることができず、インストールが失敗するということがありました。

# nodejsはインストール済み
$ which node
/usr/local/bin/node

# npmのインストールスクリプトをダウンロード
$ curl http://npmjs.org/install.sh > npm_install.sh

# sudoで実行 → 「nodejsないんだけど」って言われる。
$ sudo sh npm_install.sh 
npm cannot be installed without nodejs.
Install node first, and then try again.
解決方法

/etc/sudoersに「Default env_keep」というsudo実行ユーザから引き継ぐ環境変数を設定する項目があります。そこにPATHを追加すればOK。

# env_keepに追加
Defaults    env_keep = "PATH COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR \
           ・・・

# この1行を追加してもOK
Default env_keep+="PATH"