问题描述
这更像是一般的Linux /编程问题,但是我已经进行了一段时间编程,并且习惯于在用于配置目的的任何文件上使用诸如XML或JSON之类的格式。
作为Linux的新手,我意识到碰到的第一个配置文件(/etc/fstab
)使用某种表格式。那么为什么不使用XML或JSON呢?
最佳思路
/etc/fstab
比XML和JSON古老得多,并且由于许多程序使用它来更改其格式将是一场噩梦。
除了此/etc/fstab
,还需要在有功能系统之前对其进行解析,因为它用于装载所有基本文件系统。因此,/etc/fstab
的格式应尽可能简单,因为解析器不应依赖于任何外部库。
/etc/fstab
的语义非常简单,它们不包含任何tree-like数据结构或任何其他奇特的东西。您只需要包含六个值的记录即可。
因此,没有理由使用JSON,XML或类似的东西。
次佳思路
您确实应该在某个时候阅读Eric Raymond的The Art of Unix Programming。您似乎在假设Unix设计师如果知道XML,就可以将XML用于/etc/fstab
。相反,尽管XML并不是专门发明的,但是他们非常了解它的相似的前身,并故意将它们用于/etc/fstab
之类的配置文件。
引用他的subsection on XML:
XML is well suited for complex data formats (the sort of things for which the old-school Unix tradition would use an RFC-822-like stanza format) though overkill for simpler ones. It is especially appropriate for formats that have a complex nested or recursive structure of the sort that the RFC 822 metaformat does not handle well.
更远的地方:
The most serious problem with XML is that it doesn’t play well with traditional Unix tools. Software that wants to read an XML format needs an XML parser; this means bulky, complicated programs. Also, XML is itself rather bulky; it can be difficult to see the data amidst all the markup.
Unix的理念是使配置尽可能容易地编写脚本并易于阅读。您应该能够使用awk,grep,sed,tr和cut之类的工具处理配置文件,并轻松地以脚本语言解析它们,而无需使用笨重的库。这是Unix成功的巨大原因,不应低估。
尽管Eric Raymond赞扬XML能够处理“具有复杂的嵌套或递归结构的格式”,但是/etc/fstab
当然不需要这些,因此选择了最简单的文件格式。
因此,尽管XML确实有其用途,但您可能要考虑,地球上一些最先驱的领域的最聪明的程序员可能知道他们在做什么。也许XML并不总是最适合您自己的配置文件。
第三种思路
我现在可以想到的主要原因是:
-
fstab文件是mount命令最常使用的文件
-
mount
命令started probably before 1985的历史记录 -
XML成为有关February 10, 1998的W3C建议