Environment-Variables
從生成文件中的文件導出環境變數
我正在嘗試編寫一個 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
、. ./.env
和set +a
行在不同的 shell 中執行。的效果. ./.env
只會在執行該命令的 shell 中看到。
現代
make
實現包括對管理環境的支持。GNU make 確實,我的 do 和我在tarball中提供的
smake
增強版本都支持它。SunPro Make``schilytools
如果您仔細編寫
env
文件以在不同的行上有分配和export
語句,您可以include
將env
文件放在Makefile
.使案例如:
include $(HOME)/.env
在你的
Makefile
.