kla*_*rki 10 command-line bash gnome-terminal environment-variables
每当我打开终端时,我都会设置这个变量:
$ echo $http_proxy
http://127.0.0.1:8888/
Run Code Online (Sandbox Code Playgroud)
这个变量在哪里设置?我检查.bashrc,.bash_profile,/etc/bash.bashrc以及/etc/environment和它的无处?
我还查看了网络部分中的系统设置,代理为空。
Rav*_*ina 17
对于bash运行:
PS4='+$BASH_SOURCE> ' BASH_XTRACEFD=7 bash -xl 7> /tmp/mylog
Run Code Online (Sandbox Code Playgroud)
然后使用
grep "http_proxy=" /tmp/mylog
Run Code Online (Sandbox Code Playgroud)
去寻找它。
您也可以将搜索范围限制/home,并/etc为更好的结果:
$ grep "http_proxy=" /tmp/mylog | grep -e /home -e /etc
++/home/ravexina/.bashrc> http_proxy=http://test:80
Run Code Online (Sandbox Code Playgroud)
这意味着它已设置在我的~/.bashrc.
根据您在Unix & Linux 站点上提出的问题的本质上的重复,有几种方法可以解决这个问题:
env命令并观察变量的创建顺序,并使用前一个和下一个变量来粗略地了解变量可能来自哪里set -x命令调查的文件包装在文件的开头和结尾,以查看每个文件的作用;可能这些文件正在采购其他文件,并且set -x应该明确说明采购发生的位置find -type f -exec grep 'VARIABLE_NAME' {} \;或只grep -rI 'VARIABLE'。这是耗时的,所以可能不是最好的结果,但是嘿 - 如果没有简单的方法,人们不应该把困难的方法放在一边。strace -v -s 10000 -e execve,open,read bash并观察正在读取的内容以及前面的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是另一个谜