To jest bardziej ogólne pytanie o Linuksa / programowanie, ale programuję od jakiegoś czasu i jestem przyzwyczajony do używania formatu takiego jak XML lub JSON na dowolnym pliku używanym do celów konfiguracyjnych.
Będąc nowym użytkownikiem Linuksa, zdałem sobie sprawę, że pierwszy plik konfiguracyjny, na który wpadłem ( /etc/fstab
), używa jakiegoś formatu tabeli. Dlaczego więc nie XML lub JSON?
/usr/lib/libxml.so
i/usr
na osobnej partycji? W celu parsowania/etc/fstab
system musiałby zamontować/usrz in order to load
libxml, but to do so it would have to parse
/ etc / fstab` w celu ustalenia, który system plików należy zamontować. Aby tego uniknąć, parser XML prawdopodobnie musiałby być częścią jądra, co nie brzmi jak fantastyczny pomysł.UNIX & Linux Stack Exchange
, pytasz o Linuksa, istnieje inna strona stosu o nazwie unix.stackexchange.com. Oba byłyby prawdopodobnie w porządku, a odpowiedzi już tu są, ale po prostu wyrzucamy je na przyszłość.Odpowiedzi:
/etc/fstab
jest znacznie starszy niż XML i JSON, a ponieważ używa go całkiem sporo programów, zmiana jego formatu byłaby koszmarem.Poza tym
/etc/fstab
należy to przeanalizować, zanim powstanie funkcjonalny system, ponieważ jest używany do montowania wszystkich niezbędnych systemów plików. Dlatego format/etc/fstab
powinien być tak prosty, jak to możliwe, ponieważ parser nie powinien zależeć od żadnych zewnętrznych bibliotek.Analiza XML jest dość trudna i naprawdę chcesz tego uniknąć, jeśli nie możesz polegać na zewnętrznych bibliotekach. JSON jest nieco łatwiejszy, ale wciąż dość trudny.
Semantyka
/etc/fstab
jest dość prosta, nie zawiera żadnych drzewiastych struktur danych ani żadnych innych wymyślnych rzeczy. Wszystko czego potrzebujesz to rekordy składające się z sześciu wartości.Wartości rozdzielone spacjami są do tego wystarczające i można je łatwo przeanalizować, nawet jeśli wszystko, co masz, to biblioteki C w standardzie C.
Nie ma więc powodu, aby używać JSON, XML lub czegoś podobnego.
źródło
Powinieneś naprawdę kiedyś przeczytać The Art of Unix Programming Erica Raymonda . Wydaje się, że przyjmujesz założenie, że projektanci Uniksa użyliby XML,
/etc/fstab
gdyby o tym wiedzieli. Wręcz przeciwnie, chociaż XML nie został specjalnie wynaleziony, byli dość świadomi jego podobnych poprzedników i celowo odrzucili je dla plików konfiguracyjnych takich jak/etc/fstab
.Cytując z jego podrozdziału na temat XML :
i dalej:
Filozofia Uniksa polega na tym, aby konfiguracja była łatwa do pisania skryptami i czytelna dla człowieka, tam gdzie to możliwe. Powinieneś być w stanie przetwarzać pliki konfiguracyjne za pomocą narzędzi takich jak awk, grep, sed, tr i cut, a także łatwo parsować je w językach skryptowych bez dużych bibliotek. Jest to ogromny powód sukcesu Uniksa i nie należy go lekceważyć.
Chociaż Eric Raymond chwali XML za jego zdolność do obsługi „formatów o złożonej strukturze zagnieżdżonej lub rekurencyjnej”, z
/etc/fstab
pewnością nie ma takiej potrzeby, dlatego wybrano dla niego najprostszy możliwy format pliku.Więc chociaż XML na pewno ma swoje zastosowania, możesz rozważyć, że niektórzy z najmądrzejszych programistów na świecie, którzy byli pionierami w tej dziedzinie, mogli wiedzieć, co robią. Być może XML nie zawsze najlepiej pasuje do twoich własnych plików konfiguracyjnych.
źródło
Głównym powodem, dla którego mogę teraz myśleć, jest:
fstab
Plik jest najczęściej używany przezmount
komendęmount
dowodzenia rozpoczęła się prawdopodobnie przed 1985 rokiemźródło
fstab
plik / format jest tak stary, jakmount
się wydaje, co sugeruje. Według:man fstab
„ Przodek tego formatu pliku fstab pojawił się w 4.0BSD. ” (Fraza BSD brzmi: „ Format pliku fstab pojawił się w 4.0BSD. ”). 4.0BSD został wydany w 1980 roku .