如何永久更改sudo';s$PATH变量(Ubuntu 9.x)

如何永久更改sudo';s$PATH变量(Ubuntu 9.x),path,sudo,Path,Sudo,我想在运行sudo时向$PATH添加一些目录,这是一个(半)永久性的需求,而不是需要添加到脚本本身的东西。我注意到Django已经成功地做到了这一点(运行sudo时我的$PATH是/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/usr/X11R6/bin:/Django/Django trunk/Django/bin”)-那么它是如何做到的呢 如果您将其保存在/root/,我认为应该可以解决此问题。bashrc: export P

我想在运行sudo时向$PATH添加一些目录,这是一个(半)永久性的需求,而不是需要添加到脚本本身的东西。我注意到Django已经成功地做到了这一点(运行sudo时我的$PATH是/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/usr/X11R6/bin:/Django/Django trunk/Django/bin”)-那么它是如何做到的呢

如果您将其保存在/root/,我认为应该可以解决此问题。bashrc:

export PATH=/www/foo:$PATH
我忘了它是PATH还是PYTHONPATH,如果它真的很重要,这是基于我用户的。bashrc:

export PYTHONPATH=/www/django:$PYTHONPATH

您可以在/etc/environment中设置变量,然后使用“sudo-i”运行脚本(在ubuntu 10.10中工作)

这是sudoers文件中重置的行:

默认环境重置

您可以通过将
路径
添加到
环境
或添加此行来解决此问题:

默认值env_keep=“PATH”

编辑:meder,您不禁用环境重置,只需绕过路径重置

或者您可以删除有问题的
env_reset

但更好的是,您可以声明一个
安全路径
,当运行sudo时,它将替换
路径

默认安全路径=“/bin:/usr/bin”


这样,您就可以控制路径中包含哪些特定目录。

没问题。别忘了选择一个答案,这样其他人就可以知道它已经解决了:)这对我不起作用。我将路径添加到/root/.bashrc,然后运行“sudo env | grep path”,添加的路径不存在。也许它对PYTHONPATH有效,但对PATH无效。它对我也不起作用。我问了一个新问题,这是一个糟糕的解决方案。文件/etc/sudoers的存在允许您更改sudo的行为。将默认根路径打开到可能不应位于根路径中的文件夹是一个可怕的想法。另外,控制bash查找可执行文件的位置的是path,而不是pythonpath。这应该是公认的答案。您可以将访问权限限制为sudoer机制所需的路径,而不是打开root的所有访问权限。通过“sudo visudo”访问sudoers文件