如何在 bash set 命令中查找变量的来源?

如何在 bash set 命令中查找变量的来源?

碰巧我的set命令输出中有一些不需要的环境变量,而且我无法摆脱这些:

$ set
ALL_PROXY=socks://127.0.0.1:10010/
.... (lots of environment variables)
all_proxy=socks://127.0.0.1:10010/
https_proxy=https://127.0.0.1:11000/
no_proxy=localhost,127.0.0.0/8,10.0.0.0/8,192.168.0.0/16,172.16.0.0/12
socks_proxy=socks://127.0.0.1:10010/
.... (some functions I have no idea where they come from)
.... (some functions from my .bashrc)

我怎样才能找到这些定义的出处?

并且这些变量也是为root用户设置的。

我试图取消设置这些值并调用 bash(嵌套),但它们只是不断返回。

我已经检查过它们不在DO 检查中列出的常见地方: https://unix.stackexchange.com/questions/813/how-to-determine-where-an-environment-variable-came-from

但没有运气: https://stackoverflow.com/a/37649308/7706652

答案1

请检查以下列出的常见地点:https://unix.stackexchange.com/questions/813/how-to-determine-where-an-environment-variable-came-from

最后我发现我已经配置了这些变量,/etc/environment但不知道为什么/何时程序具有更新文件的 root 权限。(我总是sudo谨慎使用。)

答案2

要了解 Bash 启动时执行的操作:

$ man bash然后按/并输入startup,然后按ENTER

点击n查找下一个实例startup(或p返回到上一个实例)。
h将告诉您有关更多键的信息。

在其中的内容中,你会发现这样的措辞:例如,它/etc/profile会根据它的启动方式进行调查。

祝您狩猎愉快!

相关内容