Bash缺少$(HOME)变量

时间:2016-06-01 18:32:11

标签: bash shell makefile

我使用Makefile编译应用程序已经有一段时间没有任何问题了。今天,我意识到我Makefile不再工作了。一点调试,我很快发现$(HOME)没有定义

$echo $(HOME)
-bash: HOME: command not found

我一直认为$HOME$(HOME)可以互换使用。有没有理由可以配置系统以避免使用$(HOME)

1 个答案:

答案 0 :(得分:8)

它是${HOME},而不是$(HOME)

$(HOME)将扩展为HOME命令的输出。由于(可能)没有这样的命令,您将收到错误消息。

但是,$(HOME)是Makefile中的正确语法。如果您需要帮助调试Makefile,您需要向我们展示其中的内容 - 或者更好的是,展示相同问题的小Makefile。 make规则如下:

target:
        echo $(HOME)
运行make target时,

应打印主目录的路径。

在shell中,您可以将HOME变量称为$HOME${HOME};后者可以避免相邻令牌的问题。

在Makefile中,您可以使用$(HOME)${HOME},但$(HOME)形式更为常见。只有当变量名称长度为一个字符时才能省略括号(但即使这样,您也应该使用它们来清楚)。 (没有人声称make是一种清晰直观的语法模型。)