ubuntu – sudo更改PATH – 为什么?

前端之家收集整理的这篇文章主要介绍了ubuntu – sudo更改PATH – 为什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是没有sudo的PATH变量:
$ echo 'echo $PATH' | sh

/opt/local/ruby/bin:/usr/bin:/bin

这是带有sudo的PATH变量:

$ 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:

To prevent command spoofing,sudo
checks “.” and “” (both denoting
current directory) last when searching
for a command in the user’s PATH (if
one or both are in the PATH). Note,
however,that the actual PATH
environment variable is not modified
and is passed unchanged to the program
that sudo executes.

这是一个恼人的功能的ubuntu sudo的功能
注意这不会发生在fedora例如
因为sudo不是用–with-secure-path选项构建的。

解决这个“问题”在Ubuntu我做
下面在我的〜/ .bashrc

alias sudo='sudo env PATH=$PATH'

注意上面的命令将不会重置$ PATH本身的命令。
然而,“su”重置它的$ PATH,所以你必须使用-p告诉它不。 I.E .:

sudo su -p

猜你在找的Ubuntu相关文章