这个环境变量在哪里设置?
每当我打开终端时,我都有这个变量集:
$ 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网站上提到的重复内容 ,有几种方法可以解决这个问题:
- 使用
env
命令并观察变量的创建顺序,并使用前后变量粗略了解变量的来源 - 您尝试使用
set -x
命令在文件的开头和结尾调查文件,以查看每个文件的作用; 可能这些文件正在寻找其他文件,而set -x
应明确说明发生源的位置 - 考虑通过
find -type f -exec grep 'VARIABLE_NAME' {} \;
查看您的主文件夹中可能包含的一些文件find -type f -exec grep 'VARIABLE_NAME' {} \;
或者只是grep -rI 'VARIABLE'
。 这是耗时的,所以可能不是最好的结果,但是嘿 – 如果没有简单的方法,就不应该把硬性方法放在一边。 - 运行
strace -v -s 10000 -e execve,open,read bash
和observer正在读取的内容以及前面的open()
调用。 这可能对2&>1 > output_trace.txt
重定向有用,以便稍后阅读,也许grep
。 资源 -
你提到过.bashrc,.bash_profile,/ etc / bash.bashrc和/ etc / environment。 你还需要检查:
-
/etc/profile
-
/etc/profile.d/*
-
~/.profile
(仅当你没有~/.bash_profile
) -
~/.bash_login
-
-
根据Arch Wiki ,像
wget
这样的程序会使用这个变量。 检查您是否有.wgetrc
或/etc/wgetrc
文件。 这可能是设置在那里,虽然它来源于bash
是另一个谜
sudo grep -r http_proxy /etc
应该做的伎俩
gnome-terminal
本身(也就是说,这种行为被硬编码到二进制文件中)根据GNOME范围的gsetting值设置一些这些变量。