定义 bash 变量(代理)的位置

定义 bash 变量(代理)的位置

我遇到一个问题wget,我发现我的代理设置错误:

$ env | grep "proxy"
http_proxy=http://213.181.73.145:80
https_proxy=http://213.181.73.145:80

因此,当我尝试使用 下载某些内容时wget,它会尝试连接代理失败,并且不会尝试连接我需要下载的网络资源。

但在超级用户模式下一切正确:

$ sudo su
$ env | grep "proxy"
$

(空输出,无代理)

我想知道这些变量在哪里设置,我发现了很多问题。我在开头添加了下一行/etc/profile

env | grep "proxy"
echo "Hello"

令我惊讶的是,在加载任何配置文件(/etc/bashrc、~/.bashrc 等)之前,这两个变量都设置为相同的值:

(new terminal)
http_proxy=http://213.181.73.145:80
https_proxy=http://213.181.73.145:80
Hello
$

此外,我使用guake。因此,我尝试使用普通终端进行相同操作,令我惊讶的是,(我认为)文件/etc/profile未加载,因为我既看不到代理行,也看不到消息echo "Hello"

所以,我想知道在加载之前如何定义http_proxy和为什么我在打开公共终端时看不到“Hello”消息。https_proxy/etc/profile

答案1

当您打开“普通”终端时,不会显示该消息,因为该消息/etc/profile仅供登录 shell 读取,“普通”终端会启动交互式非登录 shell。请参阅我的回答这里了解更多信息。

现在,我不知道您的http_proxy设置在哪里。根据您的具体设置,它可能位于不同的地方。试试这个:

grep http_proxy /etc/bash.bashrc /etc/profile ~/.bashrc ~/.bash_login ~/.profile ~/bash_profile

该变量应在其中一个文件中设置。

答案2

在 shell 启动时运行的某些文件正在设置环境变量,例如 ~/.bashrc 、 ~/.bash_profile 或 /etc/bash.bashrc

不过,您无需更改任何文件即可删除代理变量!您只需使用“unset”命令即可!

$ unset http_proxy
$ unset https_proxy

现在那些环境变量已经消失了!如果你无法找到它们的设置位置,你可以将其添加到 ~/.bashrc 的末尾,然后为每个 shell 取消设置它们。如果你再次测试它:

$ env | grep proxy
[nothing]

你会发现他们已经走了!

相关内容