导出环境变量在 Makefile 中不起作用

ove*_*nge 16 shell make

我们有以下任务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 调用来执行。因此

\n
export SOME_ENV=someTest\n
Run Code Online (Sandbox Code Playgroud)\n

被执行,然后在一个新的shell中,

\n
go test ...\n
Run Code Online (Sandbox Code Playgroud)\n

后者看不到环境变量。

\n

您应该使用 Make\xe2\x80\x99s 构造导出变量:

\n
export SOME_ENV=someTest\n
Run Code Online (Sandbox Code Playgroud)\n

或者指定内联变量:

\n
go test ...\n
Run Code Online (Sandbox Code Playgroud)\n

或确保这两行在同一个 shell 中运行:

\n
export SOME_ENV := someTest\n\ntest:\n        go test ...\n
Run Code Online (Sandbox Code Playgroud)\n