找出bash中最后设置环境变量的位置

oma*_*ouk 12 bash environment-variables

好的,我知道有一个bash调试器.但我正在寻找的是,如果我的一个启动脚本中有一个环境变量,我不知道它是如何设置的或它可能在哪里,除了详尽地搜索脚本之外,有没有办法找到它?

我的意思是有没有提供这样的东西的机制/工具?bash是否跟踪变量设置位置?

虽然这可能看起来不是很重要,但是当我帮助一个朋友安装OpenCL时,我突然想到了这个问题,并且应该$ATISTREAMSDKROOT自动设置变量.无论如何,包应该添加一个文件/etc/profile.d以允许设置变量,但它没有.幸运的是,变量空白了.

但是我想知道它是不是空白,并且包将它添加到一些随机文件中,我可能无法告诉它除了寻找它之外的其他地方.

当然我知道有人可以编写一两个sed命令并搜索脚本,但我会考虑详尽的搜索:D

Mar*_*air 24

一种选择是使用以下命令启动bash实例:

bash -x
Run Code Online (Sandbox Code Playgroud)

...并查找该输出中设置变量的位置.要将该输出重定向到文件,您可以执行以下操作:

bash -x -ls -c "exit" 2> shell-startup-output
Run Code Online (Sandbox Code Playgroud)

您应该在输出中看到每个文件的来源.