这个环境变量在哪里设置?

每当我打开终端时,我都有这个变量集:

$ echo $http_proxy http://127.0.0.1:8888/ 

这个变量在哪里设置? 我已经检查了.bashrc.bash_profile/etc/environment /etc/bash.bashrc/etc/environment ,它在哪里?

我还查看了网络部分中的系统设置,代理是空的。

对于bash run:

 PS4='+$BASH_SOURCE> ' BASH_XTRACEFD=7 bash -xl 7> /tmp/mylog 

然后用

 grep "http_proxy=" /tmp/mylog 

去搜索它。

您还可以将搜索限制为/home/etc以获得更好的结果:

 $ grep "http_proxy=" /tmp/mylog | grep -e /home -e /etc ++/home/ravexina/.bashrc> http_proxy=http://test:80 

这意味着它已经在我的~/.bashrc设置了。

资源

根据你在Unix和Linux网站上提到的重复内容 ,有几种方法可以解决这个问题:

  1. 使用env命令并观察变量的创建顺序,并使用前后变量粗略了解变量的来源
  2. 您尝试使用set -x命令在文件的开头和结尾调查文件,以查看每个文件的作用; 可能这些文件正在寻找其他文件,而set -x应明确说明发生源的位置
  3. 考虑通过find -type f -exec grep 'VARIABLE_NAME' {} \;查看您的主文件夹中可能包含的一些文件find -type f -exec grep 'VARIABLE_NAME' {} \; 或者只是grep -rI 'VARIABLE' 。 这是耗时的,所以可能不是最好的结果,但是嘿 – 如果没有简单的方法,就不应该把硬性方法放在一边。
  4. 运行strace -v -s 10000 -e execve,open,read bash和observer正在读取的内容以及前面的open()调用。 这可能对2&>1 > output_trace.txt重定向有用,以便稍后阅读,也许grep 。 资源
  5. 你提到过.bashrc,.bash_profile,/ etc / bash.bashrc和/ etc / environment。 你还需要检查:

    • /etc/profile
    • /etc/profile.d/*
    • ~/.profile (仅当你没有~/.bash_profile
    • ~/.bash_login
  6. 根据Arch Wiki ,像wget这样的程序会使用这个变量。 检查您是否有.wgetrc/etc/wgetrc文件。 这可能是设置在那里,虽然它来源于bash是另一个谜

 sudo grep -r http_proxy /etc 

应该做的伎俩

gnome-terminal本身(也就是说,这种行为被硬编码到二进制文件中)根据GNOME范围的gsetting值设置一些这些变量。