我们有以下任务Makefile:
test:
export SOME_ENV=someTest
go test -tags=integration -v -race ./tests/integrationtest/...
Run Code Online (Sandbox Code Playgroud)
在 shell 提示符下,设置 SOME_ENV 并且下一个命令(go test)在内部选择.someTest.env文件
$ export SOME_ENV=someTest
$ go test -tags=integration -v -race ./tests/integrationtest/...
Run Code Online (Sandbox Code Playgroud)
但 Makefile 方法不起作用
为什么没有使用Makefile方法设置环境变量?
注意:我们在 Makefile 中有另一个任务,不应受到此导出的影响
Ste*_*itt 31
配方中的每一行都使用单独的 shell 调用来执行。因此
\nexport SOME_ENV=someTest\nRun Code Online (Sandbox Code Playgroud)\n被执行,然后在一个新的shell中,
\ngo test ...\nRun Code Online (Sandbox Code Playgroud)\n后者看不到环境变量。
\n您应该使用 Make\xe2\x80\x99s 构造导出变量:
\nexport SOME_ENV=someTest\nRun Code Online (Sandbox Code Playgroud)\n或者指定内联变量:
\ngo test ...\nRun Code Online (Sandbox Code Playgroud)\n或确保这两行在同一个 shell 中运行:
\nexport SOME_ENV := someTest\n\ntest:\n go test ...\nRun Code Online (Sandbox Code Playgroud)\n