我遇到一个问题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]
你会发现他们已经走了!