Environment-Variables

如何在 Bash 中導出大量變數?

  • February 11, 2018

我使用 Bash 4.3.48(1),並且.sh在 shebang 下有一個包含大約 20 個變數的文件。該文件僅包含變數。

這是模式:

x="1"
y="2"
...

我需要以DRY方式導出所有這些變數:例如,一export對所有變數,而不是說 20export表示 20 個變數。

該文件中執行此操作的最優雅的方式(最短,最有效)是什麼?

一個for循環?一個array?也許比這些更簡單(某種集合糖語​​法)?

在文件頂部使用set -a(或等效的)來啟用shell 選項。然後在文件末尾使用(或)(在適當的地方)禁用shell 選項。set -o allexport``allexport``set +a``set +o allexport``allexport

使用啟用allexportshell 選項將產生以下效果(來自bash手冊):

創建或修改的每個變數或函式都被賦予導出屬性並標記為導出到後續命令的環境。

set -a使用或設置的這個 shell 選項在 POSIXset -o allexport中定義(因此應該在所有類似的 shell 中都可用)為sh

當此選項打開時,應為執行分配的每個變數設置導出屬性;

$$ … $$如果分配在命令中的實用程序名稱之前,則導出屬性不應在實用程序完成後保留在目前執行環境中,但在特殊內置實用程序之一之前會導致導出屬性在建構後保留的例外。 in 已經完成。如果賦​​值不在命令中的實用程序名稱之前,或者如果賦值是getoptsread實用程序操作的結果,則導出屬性應持續存在,直到變數未設置。

啟用此選項時設置的變數將被導出,即製成環境變數。像往常一樣,這些環境變數將可用於目前 shell 環境和任何隨後創建的子程序環境。

這意味著您將不得不

  • 獲取此文件(使用., 或source在具有此命令的 shell 中),或
  • 啟動應該有權訪問此文件中的變數的程序。

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