これはPATH
sudo なしの変数です:
$ echo 'echo $PATH' | sh
/opt/local/ruby/bin:/usr/bin:/bin
これはPATH
sudo の変数です:
$ echo 'echo $PATH' | sudo sh
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
私の知る限り、変更しないsudo
ままにしておくことになっていますPATH
。何が起こっているのでしょうか? これを変更するにはどうすればいいのでしょうか? (これは Ubuntu 8.04 上です)。
更新: 私が見る限り、どのスクリプトもルート変更として開始されていませPATH
ん。
からman sudo
:
コマンドのなりすましを防ぐために、sudo は、ユーザーの PATH でコマンドを検索するときに、最後に「.」と「」 (どちらも現在のディレクトリを示す) をチェックします (どちらかまたは両方が PATH にある場合)。ただし、実際の PATH 環境変数は変更されず、sudo が実行するプログラムに変更されずに渡されることに注意してください。
ベストアンサー1
これは
迷惑な機能
多くのディストリビューションにおける sudo の機能。
Ubuntuでこの「問題」を回避するには、~/.bashrcで次の操作を実行します。
alias sudo='sudo env PATH=$PATH'
上記は、$PATH 自体をリセットしないコマンドに対しては機能します。ただし、`su' は $PATH をリセットするため、リセットしないようにするには -p を使用する必要があります。例:
sudo su -p