Bash 缺少 $(HOME) 变量



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

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

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

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

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

但是,$(HOME)是生成文件中的正确语法。如果你需要帮助调试你的Makefile,你需要向我们展示其中的内容 - 或者更好的是,一个表现出相同问题的小型Makefile。 make规则,如下所示:

target:
        echo $(HOME)

应该在运行 make target 时打印主目录的路径。

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

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

相关内容

  • 没有找到相关文章

最新更新