Views

59 字,阅读约 1 分钟

sudo env 临时设置

安装东西的时候遇到了一个挺奇怪的问题:

  • 我不 sudo 的时候因为没有文件访问权限,安装中途会出问题
  • 我 sudo 了,它不走代理了,就连源网址都 fetch 不到

大概感觉是因为 sudo 环境变量没有包含我临时 export 的 proxy,

为了确认这奇怪的现象确实是这样的逻辑,我尝试了以下命令:

可以看到,当我不用 sudo 的时候,wget 先按期望走了代理 127.0.0.1:3784,而当我切换 sudo 执行同样的命令,wget 直接不管代理去走了。

挺搞笑的,这个验证操作还直接复现了结果:你看前边不用 sudo 它就没有权限写入。。。我这验证太高质量了。

第一次见这种情况,所以跟同事分享了一下,他告诉了我 env 和 sudo env 这两个东西,一对比,果然 sudo 里的环境变量没有 env 中我设置的 proxy。

我的 proxy 用的是临时的方法设置的,也就是所谓的“当前窗口”有效,现在看来又学到了,并不是“当前窗口有效”,而是“当前环境有效”。

怎么解决这个问题呢?我不想把 proxy 写死,我想知道怎样用临时的方式处理这个问题。

同事跟我讲了一招:sudo 环境变量 command

它可以临时把环境变量写到 sudo 的 env 中执行命令。

所以我试了一下 sudo http_proxy=http://127.0.0.1:3784 wget github.com

sudo 的权限和代理的能力都满足了,完美解决了问题。

h4cd avatar
h4cd
This human loves sanbu.