質問: お世話になっております。 先ほどの質問でsudoやsuの理解を深めたくなり,色々検証してみたのですが, sudoで読み込まれるPATHと,su -でログインしてから読み込まれているPATHを調べると, 違いがあることを確認しました。なぜこのような違いが起こるか自分で考えてみたところ, su - はbashを実行しているので,どこかでPATHが追記されているのだと思いそれぞれの PATHを調べてみたところ以下のような出力を得ました。 ``` sudo env | grep PATH #=> /sbin:/bin:/usr/sbin:/usr/bin #sudo -iでログイン時 env | grep PATH #=> /usr/local/rbenv/shims:/usr/local/rbenv/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin #su -でログイン時 env | grep PATH #=>/usr/local/rbenv/shims:/usr/local/rbenv/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin ``` sudoと他の二つの環境変数が違うのは解るのですが,sudo -iとsu -でログインした時にPATHに含まれる 値が異なるのはなぜでしょうか。予想では,profileかrcのどちらかがsudo -iでは読まれない設定になっ ているような気がしていて,これを検証したいのですが何か良い方法は有りますでしょうか。 また,結論を知っている方いらっしゃれば教えていただきたいです。よろしくお願いいたします。
回答: bashを起動する段階の前で、sudo と su によって与えられる PATH の初期値が異なっているためだと思います。 少なくとも`/usr/local/bin`の差はそれです。 `/usr/lib64/qt-3.3/bin`はわたしの環境には無いのでわかりません。 > > これを検証したいのですが何か良い方法は有りますでしょうか。 > > > `/etc/profile`の先頭に、`echo $PATH`を入れるといいかと思います。