Environment-Variables

Makefile 包含環境文件

  • May 4, 2021

我正在嘗試將一些環境變數包含到 Makefile 中。env 文件如下所示:

FOO=bar
BAZ=quux

export請注意,每個環境變數都沒有前導。如果我在 Makefile 中添加前導文件export和僅includeenv 文件,則一切正常。但我需要保持 env vars sans 領先export。這使我無法僅include envfile在 Makefile 中使用。

我也試過做這樣的事情:

sed '/^#/!s/^/export /' envfile > $(BUILDDIR)/env
include $(BUILDDIR)/env

但是這樣做會導致 make 拋出錯誤,因為 env 文件不存在用於包含。

如果您使用的是 gnu make,那麼應該包含該envfile文件,然後導出從同一文件中獲得的變數列表:

#!make
include envfile
export $(shell sed 's/=.*//' envfile)

test:
       env

我遇到了類似的問題並登陸了這個執行緒。另一種可能的解決方案是只執行不帶任何參數的 make export 命令:

include .env
export

這會將所有 make 變數導出為環境變數。這種行為可能匹配也可能不匹配所有案例,但它對我有用,並且不涉及任何 shell 腳本魔法。

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