我如何才能找到定义 bash 变量的文件?
假设echo
命令显示
$ echo $DB_ROOT
/home/mahmood/db-4.0
现在,我如何才能找到已定义此变量的文件?我不得不说,我没有在中定义它~/.bashrc
。
答案1
有很多地方可以被定义。
要获得完整的解释,您需要查看bash
手册页,INVOCATION
但我必须警告您,在您弄清楚之前,它可能会让您头疼:-)
根据 shell 的调用方式和存在的文件,它可能是以下一个或多个:
/etc/profile
。/etc/bash.bashrc
~/.bash_profile
。~/.bash_login
。~/.profile
。~/.bashrc
。- 无论选项指定什么
--rcfile
。 - 环境变量指定的任何内容
BASH_ENV
。 - 环境变量指定的任何内容
ENV
。 - 从前面的文件调用的任何文件。
不管怎样,我通常会确保我有一个~/.bash_profile
(因为这是该集合中的最高优先级{~/.bash_profile, ~/.bash_login, ~/.profile}
- 它只会处理第一的该组中包含了它所找到的内容)。
我还确保我已经拥有~/.bashrc
并且~/.bash_profile
在最后找到了它的来源。
这样,~/.bash_profile
在登录 shell 中只保存我需要的内容,~/.bashrc
在每一个shell。您只需确保后者不包含任何“累积”命令(例如在路径末尾添加某些内容)。
还有其他方法可以进行设置,特别是当您使用不同的 shell 并且必须在它们之间共享配置文件时,但上述方案是我在bash
仅设置中发现的最简单的方案。