3

我使用 shell(bash,但我需要可移植性)和 GNU Makefile。我有这个代码:

check_commands:
        command -v find >/dev/null
        command -v asdf >/dev/null

正如假设的那样,第一个命令被传递,第二个命令中止 Makefile 并出现错误。现在,我删除>/dev/null. 那为什么

check_commands:
        command -v find

产生以下错误?

make: command: Command not found.
4

1 回答 1

13

job.cGNU make 源代码的快速浏览来看,它会尽量避免启动 shell,即当命令行足够简单(形式为cmd args,没有重定向、复合命令等)并且 shell 是默认值时一。那么问题是这command是一个内置的并且没有关联的可执行文件,因此来自 m​​ake 的错误消息。> /dev/null当你有as make 认为命令太复杂并让它sh启动它时,它不会发生。

于 2012-10-20T19:12:00.020 回答