该环境变量在哪里设置?


10

每当我打开终端时,我都会设置以下变量:

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

该变量在哪里设置?我检查.bashrc.bash_profile/etc/bash.bashrc以及/etc/environment和它的无处?

我还在网络部分中查看了系统设置,并且代理为空。

Answers:


17

对于bash运行:

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

资源


6

根据Unix&Linux站点询问的内容的本质上的重复,有几种方法可以解决此问题:

  1. 使用env命令并观察创建变量的顺序,并使用上一个和下一个变量粗略了解变量可能来自何处
  2. 将要尝试使用set -x命令调查的文件包装在文件的开头和结尾,以查看每个文件的作用;可能那些文件正在寻找其他文件,并且set -x应明确说明发生在何处
  3. 考虑通过find -type f -exec grep 'VARIABLE_NAME' {} \;或仅浏览主文件夹中可能包含的某些文件grep -rI 'VARIABLE'。这很耗时,因此可能不是最好的结果,但是,嘿-如果没有简单的方法,则不应将困难的方法放在一旁。
  4. 运行strace -v -s 10000 -e execve,open,read bash并观察者正在读取的内容以及先前的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是另一个谜团



0

gnome-terminal 本身(即,此行为被硬编码为二进制)会根据GNOME范围内的gsetting值设置其中一些变量。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.