当前位置: 首页>>技术教程>>正文


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

问题描述

这更像是一般的Linux /编程问题,但是我已经进行了一段时间编程,并且习惯于在用于配置目的的任何文件上使用诸如XMLJSON之类的格式。

作为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并不总是最适合您自己的配置文件。

第三种思路

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11456.html,未经允许,请勿转载。