
如何找到定義了 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 並且必須在它們之間共享配置文件,但上面的方案是我在bash
僅設置中找到的最簡單的方案。