Dies ist eher eine allgemeine Linux- / Programmierfrage, aber ich programmiere schon seit einiger Zeit und bin es gewohnt, für jede Datei, die für Konfigurationszwecke verwendet wird, ein Format wie XML oder JSON zu verwenden.
Als Linux-Neuling stellte ich fest, dass die erste Konfigurationsdatei, in die ich stieß ( /etc/fstab
), eine Art Tabellenformat verwendet. Warum also nicht XML oder JSON?
/usr/lib/libxml.so
und/usr
auf einer separaten Partition hätten? Um das/etc/fstab
System zu analysieren , müsste/usrz in order to load
libxml, but to do so it would have to parse
/ etc / fstab` gemountet werden, um zu wissen, welches Dateisystem gemountet werden soll. Um dies zu vermeiden, müsste der XML-Parser wahrscheinlich Teil des Kernels sein, was nicht nach einer fantastischen Idee klingt.UNIX & Linux Stack Exchange
unix.stackexchange.com. Beides wäre wahrscheinlich in Ordnung, und es gibt hier bereits Antworten, aber wirf es einfach für die Zukunft raus.Antworten:
/etc/fstab
ist viel älter als XML und JSON, und da es von vielen Programmen verwendet wird, wäre es ein Albtraum, das Format zu ändern.Außerdem
/etc/fstab
muss dies analysiert werden, bevor es ein funktionierendes System gibt, das zum Mounten aller wichtigen Dateisysteme verwendet wird. Daher sollte das Format von/etc/fstab
so einfach wie möglich sein, da der Parser nicht von externen Bibliotheken abhängig sein sollte.Das Parsen von XML ist ziemlich schwierig und Sie möchten es unbedingt vermeiden, wenn Sie keine externen Bibliotheken weitergeben können. JSON ist ein bisschen einfacher, aber immer noch ziemlich schwierig.
Die Semantik von
/etc/fstab
ist recht einfach, sie enthält keine baumartigen Datenstrukturen oder andere ausgefallene Dinge. Alles, was Sie brauchen, sind Datensätze, die aus sechs Werten bestehen.Durch Leerzeichen getrennte Werte sind dafür ausreichend und lassen sich auch dann leicht analysieren, wenn Sie lediglich die C-Standard-Bibliotheken verwenden.
Es gibt also keinen Grund, JSON, XML oder ähnliches zu verwenden.
quelle
Sie sollten Eric Raymonds The Art of Unix Programming unbedingt einmal lesen . Sie scheinen davon auszugehen, dass die Unix-Designer XML verwendet hätten,
/etc/fstab
wenn sie davon gewusst hätten. Im Gegenteil, obwohl XML hatte speziell nicht erfunden worden, waren sie ganz bewusst seine ähnlichen Vorgänger und absichtlich abgelehnt sie für Konfigurationsdateien wie/etc/fstab
.Zitat aus seinem Unterabschnitt über XML :
und weiter unten:
Die Unix-Philosophie besteht darin, die Konfiguration, wo immer dies möglich ist, leicht skript- und lesbar zu machen. Sie sollten in der Lage sein, Konfigurationsdateien mit Tools wie awk, grep, sed, tr und cut zu verarbeiten und sie in Skriptsprachen ohne umfangreiche Bibliotheken zu analysieren. Dies ist ein großer Grund für den Erfolg von Unix und sollte nicht unterschätzt werden.
Obwohl Eric Raymond XML für seine Fähigkeit lobt, "Formate zu verarbeiten, die eine komplexe verschachtelte oder rekursive Struktur aufweisen", werden diese
/etc/fstab
sicherlich nicht benötigt, weshalb das einfachste mögliche Dateiformat dafür gewählt wurde.Obwohl XML sicherlich seine Verwendung hat, sollten Sie in Betracht ziehen, dass einige der intelligentesten Programmierer der Welt, die Pionierarbeit geleistet haben, vielleicht gewusst haben, was sie taten. Möglicherweise ist XML nicht immer für Ihre eigenen Konfigurationsdateien geeignet.
quelle
Der Hauptgrund, an den ich jetzt denken kann, ist:
fstab
Datei wird am häufigsten vommount
Befehl verwendetmount
Befehlsgeschichte begann wahrscheinlich vor 1985quelle
fstab
Datei / das Format so alt ist wiemount
, was Sie nur andeuten. Lautman fstab
" Der Vorfahr dieses fstab-Dateiformats ist in 4.0BSD erschienen. " (Die BSD-Formulierung lautet " Das fstab-Dateiformat ist in 4.0BSD erschienen. "). 4.0BSD wurde 1980 veröffentlicht .