我觉得如果我在$HOME/path/to/script/myscript
编写一个shell脚本,export PATH=$PATH:$HOME/path/to/script/
那么sudo -E myscript
应该运行该脚本吗?
-E -E(保留环境)选项向安全策略指示用户希望保留其现有环境变量。如果指定了-E选项且用户没有保留环境的权限,则安全策略可能会返回错误。
但sudo -E script
无法找到该命令。我知道我可以将/absolute/path/to/script/
添加到确定PATH
的{{1}}变量的文件中,但这不是我想采用的方法。
发表评论:
@ H2CO3 :我看到sudo env
漂浮在网络上,它让我非常烦恼,它实际上是在说“给我超级用户权限来运行超级用户”。我不知道它是否能解决问题,但它似乎是一个根本上有缺陷的方法。然后我又开始在90年代中期使用linux / bsd系统,所以我只考虑了sudo sudo
命令本身。
@rici :该脚本确实具有可执行权限,但只要在* nix系统中没有运行某些内容,就可以检查该内容=)
答案 0 :(得分:8)
/ etc / sudoers具有重置环境的设置。并且还定义了一个默认的secure_path,它在运行sudo -E [cmd]时生效。
您需要编辑/ etc / sudoers文件并添加'env_keep'并提及您要保留的变量。
默认env_keep + =“PATH”
但在此之前注释掉secure_path行。然后通过sudo -E尝试你的命令。