Linux 为什么在makefile中包含/dev/null?

Linux 为什么在makefile中包含/dev/null?,linux,makefile,include,dev-null,Linux,Makefile,Include,Dev Null,我在makefile中遇到了一行。线路是: -include $(wildcard makefile.mk) /dev/null 我不理解include行中/dev/null的用途。这是故意的还是错误的?也许他们打算把输出发送到那里?我对制作文件还是比较陌生,有人能帮我理解一下吗?这是完全不必要的包含将不起任何作用。我认为它用于确保,即使通配符扩展为零,包含将导致至少一个文件-/dev/null。也许我可以这样解释。。。想象一下你有一个这样的假设汇编 INCLUDES=$(wildcard /

我在makefile中遇到了一行。线路是:

-include $(wildcard makefile.mk) /dev/null

我不理解include行中/dev/null的用途。这是故意的还是错误的?也许他们打算把输出发送到那里?我对制作文件还是比较陌生,有人能帮我理解一下吗?

这是完全不必要的<如果没有指定任何文件名,则代码>包含将不起任何作用。

我认为它用于确保,即使通配符扩展为零,
包含将导致至少一个文件-/dev/null。也许我可以这样解释。。。想象一下你有一个这样的假设汇编

INCLUDES=$(wildcard /usr/inc*)
CC -I INCLUDES prog.c -o prog
如果您的环境(当然很奇怪)在/usr/include中没有任何内容,那么编译命令将扩展到

CC -I prog.c -o prog
这可能会导致错误。因此添加
/dev/null
可能会避免这种情况

我不是说这是必要的,我只是说我认为这可能是它的目的。这与程序员使用

grep pattern file /dev/null
而不是更现代的

grep -H pattern file
因为它是一个肯定存在的文件,因此,
grep
将接收两个文件作为参数,因此将告诉您它在其中找到模式的文件的名称-就像您指定的
-H
一样

另一个例子是Solaris上的
format
命令。它为您提供了一个可爱的所有连接磁盘的列表,但是在您选择一个磁盘之前,它会一直挂在那里—如果您想从脚本解析列表,这并不理想。在这里,您可以再次使用/dev/null,它将列出磁盘,如果您这样做,它将退出

format < /dev/null
格式
它可能是用来保证至少指定了一个文件,以防行的其余部分扩展为空。@MarkSetchell您能把它作为答案吗?也许还需要扩展一下,/dev/null的加法应该涵盖没有结果的情况,这是一个好的和/或典型的编码标准吗?还是有更好的方法处理这个问题?不,根本没有理由这么做。