我想在运行sudo时向$ PATH添加一些目录,这是一个(半)永久性要求,而不是需要添加到脚本本身的东西。我注意到Django已经设法做到了,(运行sudo时我的$ PATH是“/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin:/ usr / X11R6 / bin:/ django / django-trunk / django / bin“) - 那是怎么做到的?
答案 0 :(得分:17)
这是sudoers文件中重置的行:
Defaults env_reset
您可以通过将PATH
添加到env_keeps
或添加以下内容来解决此问题:
Defaults env_keep = "PATH"
编辑:meder,你没有禁用env_reset,你只需绕过路径重置
或者您可以删除有问题的env_reset
行。
更好的是,您可以在运行sudo时声明将替换secure_path
的{{1}}:
PATH
通过这种方式,您可以控制要包含在路径中的特定目录。
答案 1 :(得分:6)
我认为如果将其保存在/root/.bashrc中,这应该可以解决:
export PATH=/www/foo:$PATH
我忘记了它是PATH还是PYTHONPATH,如果真的很重要,这是基于我的用户的.bashrc:
export PYTHONPATH=/www/django:$PYTHONPATH
答案 2 :(得分:3)
您可以在/ etc / environment中设置变量,然后使用“sudo -i”运行脚本(适用于ubuntu 10.10)。