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

相關內容