前回の記事、root ユーザーで vim を実行する方法で、sudo vim すると、環境変数 $PATH に設定した値が効かなくて /usr/local/bin/ にある vim を呼んでくれないということを書きましたが、あっさり解決方法を見付けてしまったので書きます。
問題は次のようになってしまうことです。
$ which vim
/usr/local/bin/vim
/usr/local/bin/vim
$ sudo which vim
/usr/bin/vim
$ su -
# which vim
/usr/local/bin/vim
解決方法はふたつありました。
sudo 実行時に、環境変数 $PATH をそのまま引き継ぎたいのだったら、/etc/sudoers の最後の方に次のように書きます。
- /etc/sudoers
- Defaults env_keep += "PATH"
こうすると、sudo を実行したユーザーが各自設定している環境変数 $PATH を、sudo 実行時にも引き継ぐようになります。
$HOME/bin/ とかを追加したい場合だったら、こっちの設定がいいと思います。
あるいは、sudo 実行時に参照するパスに、直接 /usr/local/bin/ を追加してしまう方法もあります。
secure_path に次のようにパスを書き加えます。
- /etc/sudoers
- Defaults secure_path = /usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
今回追加したかったのは、/usr/local/ というどのユーザーでも共通で使いたいコマンドを置いている場所だったので、こちらの方法をとりました。
これで、sudo したときでも /usr/local/bin/vim が呼ばれるようになりました。
$ sudo which vim
/usrlocal/bin/vim
/usrlocal/bin/vim