Shell
從 Makefile 導出環境變數不起作用
我們有以下任務
Makefile
:test: export SOME_ENV=someTest go test -tags=integration -v -race ./tests/integrationtest/...
在 shell 提示符下,設置了 SOME_ENV 並且下一個命令(
go test
)在內部選擇.someTest.env
文件$ export SOME_ENV=someTest $ go test -tags=integration -v -race ./tests/integrationtest/...
但 Makefile 方法不起作用
為什麼沒有使用
Makefile
方法設置環境變數?注意:我們在 Makefile 中還有其他任務不應該受到此導出的影響
配方中的每一行都使用單獨的 shell 呼叫來執行。因此
export SOME_ENV=someTest
被執行,然後在一個新的shell中,
go test ...
後者看不到環境變數。
您應該使用 Make 的構造導出變數:
export SOME_ENV := someTest test: go test ...
或指定變數內聯:
test: SOME_ENV=someTest go test ...
或確保兩行都在同一個 shell 中執行:
test: export SOME_ENV=someTest && \ go test ...