Linux

將環境變數放到 /usr/local/bin 是個好主意嗎

  • October 3, 2013

我正在使用 aws cfn 啟動 ubuntu 實例,我需要將 cfn 啟動腳本中提供的變數傳遞給實例上的腳本。例如,我可能會傳遞“db-server=db-2.domain.com”,並且實例上有許多腳本想要知道這個地址。

目前我在 /etc/profile.d 中創建了一個文件,設置 vars with export,但這僅在 bash 作為登錄 shell 啟動時才有效,這需要我進行額外的操作才能使這些變數無處不在。

所以我認為也許我可以在 /usr/local/bin 中創建文件,例如get-db-host.sh作為echo "db-2.domain.com"內容,這樣它們將可用於每個腳本而無需更改。

這是一個好方法嗎?

這是一個好方法嗎?

我很確定你所說的所有腳本都是 shell 腳本。在這種情況下,您可以將所有變數放在配置文件中:

db-server=db-2.domain.com

將其放在標準位置(例如,/usr/local/etc/myapp/)並在其他腳本中獲取它:

. /usr/local/etc/myapp

/etc顯然,您也可以使用 plain 。

推薦的方法是將變數添加到/etc/environment. 此文件在登錄時讀取(來自Ubuntu 文件):

影響整個系統(而不僅僅是特定使用者)的環境變數設置不應放在載入系統或桌面會話時執行的許多系統級腳本中的任何一個中,而應放在

/etc/environment - 此文件專門用於系統範圍的環境變數設置。它不是一個腳本文件,而是由賦值表達式組成,每行一個。具體來說,此文件儲存系統範圍的區域設置和路徑設置。

所以,只需編輯/etc/environment/和添加

db-server=db-2.domain.com

引用自:https://unix.stackexchange.com/questions/93433