sudo が PATH を変更するのはなぜですか? [closed] 質問する

sudo が PATH を変更するのはなぜですか? [closed] 質問する

これはPATHsudo なしの変数です:

$ echo 'echo $PATH' | sh 
/opt/local/ruby/bin:/usr/bin:/bin

これはPATHsudo の変数です:

$ 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

おすすめ記事