为什么 /etc/fstab 不使用 XML 或 JSON?

为什么 /etc/fstab 不使用 XML 或 JSON?

这更像是一个一般的 Linux / 编程问题,但我已经编程一段时间了,我习惯使用这样的格式XML或者JSON用于配置目的的任何文件。

作为 Linux 新手,我发现我遇到的第一个配置文件 ( /etc/fstab) 使用某种表格格式。那么为什么不使用 XML 或 JSON 呢?

答案1

/etc/fstab比 XML 和 JSON 要古老得多,而且很多程序都在使用它,因此更改其格式将是一场噩梦。

此外, /etc/fstab由于它用于挂载所有必要的文件系统,因此需要在系统正常运行之前对其进行解析。因此,格式/etc/fstab应尽可能简单,因为解析器不应依赖任何外部库。

解析 XML 相当困难,如果无法依赖外部库,您确实需要避免它。JSON 稍微容易一些,但仍然相当困难。

的语义/etc/fstab非常简单,它们不包含任何树状数据结构或任何其他花哨的东西。您所需要的只是由六个值组成的记录。

空格分隔的值已经足够好了,而且即使您只有 C 标准库,它们也很容易解析。

因此没有理由使用 JSON、XML 或类似的东西。

答案2

你真的应该读一下 Eric Raymond 的Unix 编程艺术有时。你似乎假设 Unix 设计者/etc/fstab如果知道 XML 的话就会使用它。相反,尽管 XML 当时还没有被发明,但他们很清楚它的类似前身,并且故意地拒绝了他们的配置文件,例如/etc/fstab

引用他的XML 小节

XML 非常适合复杂的数据格式(对于这种格式,老式 Unix 传统会使用类似 RFC-822 的节格式),但对于较简单的格式来说就有些过头了。它尤其适合具有复杂嵌套或递归结构的格式,而 RFC 822 元格式无法很好地处理这种结构。

以及更下方的内容:

XML 最严重的问题是它与传统的 Unix 工具不兼容。想要读取 XML 格式的软件需要 XML 解析器;这意味着程序庞大而复杂。此外,XML 本身也相当庞大;在所有的标记中很难看到数据。

Unix 的理念是尽可能使配置易于编写脚本并易于阅读。您应该能够使用 awk、grep、sed、tr 和 cut 等工具处理配置文件,并轻松地使用脚本语言解析它们,而无需庞大的库。这是 Unix 成功的一个重要原因,不应低估。

尽管 Eric Raymond 称赞 XML 能够处理“具有复杂嵌套或递归结构的格式”,但 XML /etc/fstab当然不需要这些结构,因此选择了最简单的文件格式。

因此,尽管 XML 确实有其用途,但您可能要考虑一下,世界上一些最聪明的程序员,他们是该领域的先驱,可能知道他们在做什么。也许 XML 并不总是最适合您自己的配置文件。

答案3

我现在能想到的主要原因是:

相关内容