当我使用任何带有 sudo 的命令时,环境变量都不存在。例如,在设置 HTTP_PROXY 之后,命令 wget
没有 sudo
--- 可以正常工作。但是,如果我输入 sudo wget
它说它不能绕过代理设置。
原文由 Ahmed Aswani 发布,翻译遵循 CC BY-SA 4.0 许可协议
当我使用任何带有 sudo 的命令时,环境变量都不存在。例如,在设置 HTTP_PROXY 之后,命令 wget
没有 sudo
--- 可以正常工作。但是,如果我输入 sudo wget
它说它不能绕过代理设置。
原文由 Ahmed Aswani 发布,翻译遵循 CC BY-SA 4.0 许可协议
首先你需要 export HTTP_PROXY
。其次,您需要阅读 man sudo
,并查看 -E
标志。这有效:
$ export HTTP_PROXY=foof
$ sudo -E bash -c 'echo $HTTP_PROXY'
这是手册页中的引用:
-E, --preserve-env
Indicates to the security policy that the user wishes to preserve their
existing environment variables. The security policy may return an error
if the user does not have permission to preserve the environment.
原文由 Employed Russian 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答2.8k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
2 回答1.4k 阅读
2 回答1.1k 阅读✓ 已解决
3 回答1.7k 阅读
1 回答1.1k 阅读✓ 已解决
诀窍是通过
sudo visudo
命令将环境变量添加到sudoers
文件并添加以下行:取自 ArchLinux wiki 。
对于 Ubuntu 14,您需要在单独的行中指定,因为它返回多变量行的错误: