【问题标题】:source env variables files inside MakefileMakefile 中的源环境变量文件
【发布时间】:2019-02-01 14:02:25
【问题描述】:
所以从我的本地机器我可以做到这一点:
. env_vars.env
它工作正常:
cat env_vars.env
#!/bin/bash
export abce=def
但是当我尝试在 makefile 中反映相同的内容时,它什么也不返回:
SHELL=/bin/bash
print-env-vars:
. env_vars.env
echo ${abce}
我也尝试在 makefile 中使用源 env_vars.env,但输出仍然相同。想知道如何在 makefile 中获取变量。
【问题讨论】:
标签:
linux
bash
jenkins
makefile
【解决方案1】:
make 配方的每一行都由单独的 shell 执行,因此即使您获取文件,获取该文件的 shell 也会在下一行被评估之前退出。这相当于从您的 shell 中运行以下命令:
bash -c '. env_vars.env'
bash -c 'echo ${abce}'
将两个命令放在同一行(或使用\ 将单个逻辑行拆分为多个物理行),以便在同一个shell 中执行。分号是必需的,以便 shell 看不到 . env_vars.env echo ${abce}
作为运行的单个命令。
print-env-vars:
. env_vars.env; \
echo $${abce}
(双美元符号确保您实际上将参数扩展传递给 shell,而不是 make 尝试扩展 make 变量。)