/ etc / fstabがXMLまたはJSONを使用しないのはなぜですか?


22

これは一般的なLinux /プログラミングの質問に似ていますが、私はしばらくプログラミングをしており、構成に使用されるファイルでXMLJSONなどの形式を使用することに慣れています。

Linuxを初めて使用するとき、最初に衝突した構成ファイル(/etc/fstab)が何らかのテーブル形式を使用していることに気付きました。それでは、なぜXMLやJSONではないのでしょうか?


7
たとえば、XML解析ライブラリが別のパーティション内/usr/lib/libxml.soおよび/usr別のパーティションにある場合はどうなりますか?/etc/fstabシステムを解析するには、どのファイルシステムをマウントするかを知るために/usrz in order to load libxml , but to do so it would have to parse / etc / fstab` をマウントする必要があります。これを避けるためには、XMLパーサーはおそらく素晴らしいアイデアのように聞こえないカーネルの一部である必要があります。
el.pescado

4
@ V0R73X、この質問がより一般的なLinuxの質問であると感じた場合UNIX & Linux Stack Exchange、unix.stackexchange.com と呼ばれる別のStackサイトがあります。おそらく両方とも大丈夫で、ここにはすでに答えがありますが、将来のためにそれを捨てます。
トリシス14年

8
XMLなどは常に良い形式ではありません。テーブルはテーブルであり、そのまま保存する必要があります。実際、一部の人々は、XMLは何にも役に立た
alfC

2
JSONを構成ファイルに使用しないでください。コメントはサポートされていません。コメントは、構成オプションを説明したり、構成の一部をコメントアウトすることで物事を試すのに不可欠です。
artbristol

2
XMLはドキュメント転送形式であり、構成ファイル形式ではありません。
マシューイフェ14年

回答:


82

/etc/fstab XMLやJSONよりもはるかに古く、非常に多くのプログラムで使用されているため、形式を変更するのは悪夢です。

それに加えて、/etc/fstabすべての重要なファイルシステムをマウントするために使用されるため、機能的なシステムが存在する前にこれ を解析する必要があります。したがって、/etc/fstabパーサーは外部ライブラリに依存してはならないため、の形式はできる限り単純でなければなりません。

XMLの解析は非常に難しく、外部ライブラリでリレーできない場合は、XMLを実際に回避する必要があります。JSONは少し簡単ですが、それでもかなり難しいです。

のセマンティクス/etc/fstabは非常に単純で、ツリーのようなデータ構造やその他の凝ったものは含まれていません。必要なのは、6つの値で構成されるレコードだけです。

Whitepaceで区切られた値はそのために十分であり、C標準ライブラリだけを持っている場合でも簡単に解析できます。

したがって、JSON、XML、または同様のものを使用する理由はありません。


fstabが実行する必要があるのは、白い分離フィールドで十分です。単純にそれを行うために物事をより複雑にしたくない。
マイケルマルティネス14年

CSVはさらにシンプルで簡単になります
そり14年

3
@ArtBなぜ区切り文字を変更するとファイルの解析の複雑さが変わると思いますか?
ダンニーリー14年

クォート、エスケープなどのルールによっては、区切り文字は現在使用されている可変長の区切り文字ではなく常に1文字であるため、CSVの解析が少し簡単になります。しかし、現在の形式では、人間の可読性が向上しており、これも重要な値です。
フロリアンディーシュ14年

32

Eric RaymondのThe Art of Unix Programmingをいつか読んでください。あなたは、Unixの設計者がXMLを/etc/fstab知っていれば、XMLを使用していたであろうという仮定を立てているようです。それどころか、特にXMLは発明されていませんでしたが、XMLは同様の前身を非常に認識しており、XML などの構成ファイルについて意図的にそれらを拒否しました/etc/fstab

XMLに関する彼のサブセクションから引用:

XMLは複雑なデータ形式(旧式のUnixの伝統ではRFC-822に似たスタンザ形式を使用するようなもの)に適していますが、より単純な形式には過剰です。RFC 822メタフォーマットがうまく処理できないような複雑な入れ子構造または再帰構造を持つフォーマットに特に適しています。

そしてさらに下:

XMLの最も深刻な問題は、従来のUnixツールではうまく機能しないことです。XML形式を読みたいソフトウェアには、XMLパーサーが必要です。これは、大きくて複雑なプログラムを意味します。また、XML自体はかなりかさばります。すべてのマークアップの中でデータを表示することは困難です。

Unixの哲学は、可能な限り構成を簡単にスクリプト化し、人間が読めるようにすることです。awk、grep、sed、tr、cutなどのツールを使用して設定ファイルを処理し、巨大なライブラリなしでスクリプト言語で簡単に解析できる必要があります。これはUnixの成功の背後にある大きな理由であり、過小評価すべきではありません。

エリック・レイモンドは「複雑な入れ子構造または再帰構造を持つフォーマット」を処理できることでXMLを高く評価していますが、 /etc/fstab確かにそれらは必要ないため、可能な限り最も単純なファイル形式が選択されました。

そのため、XMLには確かに用途がありますが、この分野を開拓した地球上で最も優秀なプログラマーの何人かが自分たちがしていることを知っているかもしれないと考えたいかもしれません。おそらく、XMLが常に独自の構成ファイルに最適であるとは限りません。


18

私が今考えることができる主な理由は次のとおりです。


4
この答えは、実際にはfstabファイル/フォーマットがと同じくらい古いことを示しているわけではありませんmount。によればman fstab、「このfstabファイル形式の祖先は4.0BSDで登場しました。」(BSDのフレーズit「fstabファイル形式は4.0BSDで登場しました。」)。4.0BSDは1980年にリリースされました。
ダニエルベック14年

@DanielBeckだから、1985
でした。–ラドゥラデアヌ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.