Makefile中的$$ {HOME}或$ {HOME}?

时间:2018-06-07 22:43:44

标签: linux bash shell makefile environment-variables

$ 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}}

1 个答案:

答案 0 :(得分:3)

是和否。最好使用$$来明确。但是,there is a special rule for environment variables

  

make中的变量可以来自运行make的环境。在启动时查看的每个环境变量都将转换为具有相同名称和值的make变量。但是makefile中的显式赋值或命令参数会覆盖环境。 (如果指定了`-e'标志,则环境中的值会覆盖makefile中的赋值。请参阅选项摘要。但不建议这样做。)