为什么要改变路线?

为什么要改变路线?

这是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没碰过。到底怎么回事?我该怎么改变这个?(这是在Ubuntu8.04上)。

更新:据我所见,没有一个脚本是以根更改启动的。PATH无论如何。

从…man sudo:

为了防止命令欺骗,sudo检查`.‘。和“`”(都表示当前目录)在搜索用户路径中的命令时最后(如果其中一个或两者都在路径中)。但是,请注意,实际的PATH环境变量没有被修改,而是不改变地传递给SUDO执行的程序。


慕田峪9158850
浏览 541回答 3
3回答

万千封印

特征在许多分布上。为了在ubuntu上解决这个“问题”,我在我的~/.bashrc中做了以下工作alias sudo='sudo env PATH=$PATH'注意,上面的命令适用于不重置$path本身的命令。然而,‘su’重置它是$path,所以您必须使用-p来告诉它不要这样做。即:sudo su -p

阿波罗的战车

如果其他人运行了,并且只想禁用所有用户更改的所有路径变量。使用以下命令访问sudoers文件:visudo..您应该在某个地方看到以下一行:默认env重置应该在下一行中添加以下内容缺省值!安全路径在默认情况下,安全路径是启用的。此选项指定在执行操作时创建$path的内容。感叹号禁用该功能。
打开App,查看更多内容
随时随地看视频慕课网APP