Environment-Variables

從生成文件中的文件導出環境變數

  • June 14, 2018

我正在嘗試編寫一個 make 任務,它將從我的 .env 文件中導出所有變數,它應該如下所示:

A=1
B=2

如果我輸入終端:

set -a
. ./.env
set +a

它完美地工作。

但是 Makefile 中的相同任務不起作用:

export.env:
   set -a
   . ./.env
   set +a


make export.env # done
printenv | grep A # nothing!

在完成任務後,我需要這些變數持續存在。

像任何程序一樣,make 不能修改現有程序的環境,它只能控制傳遞給它啟動的程序的環境。如此短的填充輸入緩衝區,沒有辦法做你想做的事。

此外,make在不同的 shell 中處理每個命令行,因此您的set -a. ./.envset +a行在不同的 shell 中執行。的效果. ./.env只會在執行該命令的 shell 中看到。

現代make實現包括對管理環境的支持。

GNU make 確實,我的 do 和我在tarball中提供的smake增強版本都支持它。SunPro Make``schilytools

如果您仔細編寫env文件以在不同的行上有分配和export語句,您可以includeenv文件放在Makefile.

使案例如:

include $(HOME)/.env

在你的Makefile.

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