sudo E选项不起作用?

在我看来,如果我在$HOME/path/to/script/myscript编写shell脚本,并export PATH=$PATH:$HOME/path/to/script/那么sudo -E myscript应该运行脚本吧?

从sudo手册页:

-E -E(保留环境)选项向安全策略表明用户希望保留其现有的环境variables。 如果指定-E选项并且用户没有保留环境的权限,则安全策略可能会返回错误。

但是sudo -E script找不到命令。 我知道我可以添加/absolute/path/to/script/到确定PATHvariables为sudo env ,但这不是我想要的方法。

解决意见:
// @ H2CO3 :我看到sudo sudo在网上漂浮,它让我感到非常惊讶,它实际上是在说“给我超级用户权限来运行超级用户”。 我不知道这是否会解决问题,但似乎是一个根本上有缺陷的方法。 然后,我再次开始在90年代中期使用linux / bsd系统,所以我只考虑sudo命令本身。
@rici :这个脚本具有可执行权限,但是当* nix系统不运行时,这肯定是要检查的东西)

/ etc / sudoers默认情况下有一个设置来重置环境。 并且还定义了一个默认的secure_path,当你运行sudo -E [cmd]的时候它是有效的。

您将需要编辑/ etc / sudoers文件并添加“env_keep”并提及要保留的变量。

默认env_keep + =“PATH”

但在此之前注释掉secure_path行。 然后通过sudo -E尝试你的命令。