bash 变量在哪里定义?

bash 变量在哪里定义?

我如何才能找到定义 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仅设置中发现的最简单的方案。

相关内容