$ cat Makefile
all:
echo VAR is ${HOME}
echo VAR is $${HOME}
给予
$ make
echo VAR is /home/abc
VAR is /home/abc
echo VAR is ${HOME}
VAR is /home/abc
为什么
echo VAR is ${HOME}
语法在 Makefile 中有效?我想,要使用 shell 变量,你必须使用 $${HOME}
是和不是。最好使用
$$
来明确。然而,环境变量有一个特殊的规则:
make中的变量可以来自make运行的环境。 make 启动时看到的每个环境变量都会转换为具有相同名称和值的 make 变量。但是 makefile 中的显式赋值或使用命令参数会覆盖环境。 (如果指定了“-e”标志,则环境中的值将覆盖 makefile 中的分配。请参阅选项摘要部分。但这不是推荐的做法。)