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

时间:2011-03-14 14:23:13

标签: bash environment-variables

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

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

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

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

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

1 个答案:

答案 0 :(得分:24)

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

bash -x

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

bash -x -ls -c "exit" 2> shell-startup-output

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