我想在像这样的makefile中运行一个脚本
all: a b
a:
cd ~/trials; \
. ./sx.sh
b:
echo $(bn)
sx.sh这样做
export bn=1
发出make命令时,我在终端中看不到变量。我的目标是在为那些特定于脚本的设置编译项目之前运行脚本。
答案 0 :(得分:2)
您不能假设make发出的命令都是由shell的同一实例处理的。 Make不会打开shell并逐个提供命令,也不会将命令保存到文件中,然后将其提供给shell。它通常会为每个命令生成一个shell,如下所示:
$(SHELL) -c 'cd ~/trials; . ./sx.sh'
这意味着您无法改变环境并让以后的命令继承它。
最好的方法是使用make变量来存储您希望传递给命令的细节,并在适当的位置使用这些变量。