![‘sudo apt-get’ 和 ‘sudo -E apt-get’ 之间的区别](https://linux22.com/image/880903/%E2%80%98sudo%20apt-get%E2%80%99%20%E5%92%8C%20%E2%80%98sudo%20-E%20apt-get%E2%80%99%20%E4%B9%8B%E9%97%B4%E7%9A%84%E5%8C%BA%E5%88%AB.png)
我在 VMWare Player (7.1.3 build-3206955) 上使用 Ubuntu 15.10 客户机,主机操作系统为 Windows 10。我可以使用 Firefox 在客户机内浏览网页,但无法apt
在终端上使用。每当我调用命令时sudo apt-get update
,它都会卡在0% [connecting to in.archive.ubuntu.com]
,最终失败。此外,使用sudo apt-get install <package>
always 会导致找不到包。另一方面,使用带有 sudo 标志的相同命令可以-E
使它们正常工作。有人能解释一下这里发生了什么吗?
编辑:我忘了补充一下,我使用了多个互联网连接;一个有代理,一个没有。常规 sudo 在没有代理的那个上有效,但在有代理的那个上无效。
答案1
这里的秘诀是proxy
。在您的环境中,您将拥有允许您访问互联网的代理信息集。
环境变量http_proxy
包含您的代理设置。
执行echo $http_proxy
即可查看它们(可能$HTTP_PROXY
)。
如果您运行sudo <command>
,该命令将在其自己的环境中作为 执行root
。如果您将-E
选项添加到sudo
,该命令将作为 执行root
,但会复制大部分环境。
您可以通过执行以下三个命令来检查:
env
sudo env
sudo -E env