Cela ressemble plus à une question générale sur Linux / programmation, mais je programme depuis un certain temps et j'ai l'habitude d'utiliser un format tel que XML ou JSON sur n'importe quel fichier utilisé à des fins de configuration.
Étant nouveau sur Linux, j'ai réalisé que le premier fichier de configuration que j'ai rencontré ( /etc/fstab
) utilise une sorte de format de tableau. Alors pourquoi pas XML ou JSON?
/usr/lib/libxml.so
et/usr
sur une partition séparée? Pour analyser le/etc/fstab
système, il faudrait monter/usrz in order to load
libxml, but to do so it would have to parse
/ etc / fstab` afin de savoir quel système de fichiers monter. Pour éviter cela, l'analyseur XML devrait probablement faire partie du noyau, ce qui ne semble pas être une idée fantastique.UNIX & Linux Stack Exchange
unix.stackexchange.com. Les deux seraient probablement OK, et il y a déjà des réponses ici, mais il suffit de les jeter pour l'avenir.Réponses:
/etc/fstab
est beaucoup plus ancien que XML et JSON, et comme beaucoup de programmes l'utilisent, changer son format serait un cauchemar.En outre, cela
/etc/fstab
doit être analysé avant qu'il n'y ait un système fonctionnel car il est utilisé pour monter tous les systèmes de fichiers essentiels. Par conséquent, le format de/etc/fstab
devrait être aussi simple que possible car l'analyseur ne devrait dépendre d'aucune bibliothèque externe.L'analyse XML est assez difficile et vous voulez vraiment l'éviter si vous ne pouvez pas relayer sur des bibliothèques externes. JSON est un peu plus facile mais toujours assez difficile.
La sémantique de
/etc/fstab
est assez simple, elle n'inclut aucune structure de données arborescente ni aucun autre élément fantaisie. Tout ce dont vous avez besoin est des enregistrements composés de six valeurs.Les valeurs séparées par des espaces sont suffisantes pour cela, et elles sont faciles à analyser même si vous ne disposez que des bibliothèques standard C.
Il n'y a donc aucune raison d'utiliser JSON, XML ou quelque chose de similaire.
la source
Vous devriez vraiment lire The Art of Unix Programming d' Eric Raymond un jour . Vous semblez faire l'hypothèse que les concepteurs d'Unix auraient utilisé XML
/etc/fstab
s'ils l'avaient su. Au contraire, bien que XML spécifiquement n'ait pas été inventé, ils étaient tout à fait conscients de ses prédécesseurs similaires et les ont délibérément rejetés pour des fichiers de configuration comme/etc/fstab
.Citant de sa sous-section sur XML :
et plus bas:
La philosophie Unix consiste à rendre la configuration facilement scriptable et lisible par l'homme dans la mesure du possible. Vous devriez pouvoir traiter les fichiers de configuration avec des outils tels que awk, grep, sed, tr et cut, et les analyser facilement dans des langages de script sans bibliothèques volumineuses. C'est une énorme raison derrière le succès d'Unix et ne doit pas être sous-estimée.
Bien qu'Eric Raymond vante XML pour sa capacité à gérer "les formats qui ont une structure imbriquée ou récursive complexe",
/etc/fstab
n'en a certainement pas besoin, et donc le format de fichier le plus simple possible a été choisi pour cela.Ainsi, bien que XML ait certainement ses utilisations, vous voudrez peut-être considérer que certains des programmeurs les plus intelligents de la planète qui ont été les pionniers dans le domaine auraient pu savoir ce qu'ils faisaient. Peut-être que XML n'est pas toujours le mieux adapté à vos propres fichiers de configuration.
la source
La principale raison pour laquelle je peux penser maintenant est:
fstab
fichier est le plus souvent utilisé par lamount
commandemount
commandement a commencé probablement avant 1985la source
fstab
fichier / format est aussi ancien quemount
, ce que vous semblez impliquer. Selonman fstab
, " L'ancêtre de ce format de fichier fstab est apparu dans 4.0BSD. " (La phrase BSD le " Le format de fichier fstab est apparu dans 4.0BSD. "). 4.0BSD est sorti en 1980 .