我有一个makefile,如下所示
.PHONY: check
check:
./check.sh
.PHONY: bar
bar: ENV_TEST ?= bar_env_test
bar:
echo $(ENV_TEST)
和脚本文件(check.sh
)
#!/bin/bash
echo $ENV_TEST
echo $ENV_TEST_2
首先,我导出ENV_TEST
和ENV_TEST_2
变量的值
export ENV_TEST=env_test
export ENV_TEST_2=env_test_2
然后运行make check
并获得以下输出
./check.sh
env_test_2
ENV_TEST_2
的值已正确打印,但ENV_TEST
的值为空。
我的预期输出是这样的
./check.sh
env_test
env_test_2
有谁知道ENV_TEST
环境变量发生了什么?
答案 0 :(得分:0)
这是响应的一部分:
当您将export
指令添加到特定于目标的分配时,它就可以了:
check:
@ ./check.sh
bar: export ENV_TEST ?= bar_env_test
bar:
@ echo $(ENV_TEST)
.PHONY: check bar
结果:
$ export ENV_TEST=env_test
$ export ENV_TEST_2=env_test_2
$ make check
env_test
env_test_2
$ make bar
env_test
$ unset ENV_TEST
$ make check
env_test_2
$ make bar
bar_env_test