Это больше похоже на общий вопрос о Linux / программировании, но я некоторое время программировал, и я привык использовать такой формат, как XML или JSON, для любого файла, который используется для целей конфигурации.
Будучи новичком в Linux, я понял, что в первом конфигурационном файле, в который я наткнулся ( /etc/fstab
), используется какой-то формат таблицы. Так почему бы не XML или JSON?
/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-парсер должен быть частью ядра, что не звучит как фантастическая идея.UNIX & Linux Stack Exchange
unix.stackexchange.com. Оба, вероятно, будут в порядке, и здесь уже есть ответы, но просто выбрасываю их на будущее.Ответы:
/etc/fstab
намного старше, чем XML и JSON, и так как многие программы используют его, изменение его формата было бы кошмаром.Кроме того, это
/etc/fstab
необходимо проанализировать, прежде чем появится функциональная система, так как она используется для монтирования всех необходимых файловых систем. Следовательно, формат/etc/fstab
должен быть настолько простым, насколько это возможно, так как парсер не должен зависеть от каких-либо внешних библиотек.Синтаксический анализ XML довольно сложен, и вы действительно хотите его избежать, если не можете передавать внешние библиотеки. JSON немного проще, но все еще довольно сложен.
Семантика
/etc/fstab
довольно проста, они не включают в себя древовидные структуры данных или любые другие причудливые вещи. Все, что вам нужно, это записи, состоящие из шести значений.Значения, разделенные пробелами, достаточно хороши для этого, и их легко анализировать, даже если у вас есть только стандартные библиотеки языка Си.
Так что просто нет причин использовать JSON, XML или что-то подобное.
источник
Вы должны действительно прочитать Эрика Реймонда Искусство программирования Unix - то. Похоже, вы предполагаете, что разработчики Unix использовали бы XML,
/etc/fstab
если бы знали об этом. Напротив, хотя XML специально не был изобретен, они были в курсе его аналогичных предшественников и намеренно отклонили их для файлов конфигурации, таких как/etc/fstab
.Цитата из его подраздела по XML :
и дальше вниз:
Философия Unix состоит в том, чтобы сделать конфигурацию легко написанной на скрипте и удобной для чтения человеком, где это возможно. Вы должны иметь возможность обрабатывать файлы конфигурации с помощью таких инструментов, как awk, grep, sed, tr и cut, и легко анализировать их на языках сценариев без громоздких библиотек. Это огромная причина успеха Unix, и ее нельзя недооценивать.
Хотя Эрик Рэймонд хвалит XML за его способность обрабатывать «форматы, которые имеют сложную вложенную или рекурсивную структуру»,
/etc/fstab
конечно, в них нет необходимости, и поэтому для него был выбран самый простой из возможных форматов файлов.Поэтому, хотя XML, безусловно, имеет свое применение, вы можете подумать, что некоторые из самых умных программистов на планете, которые первыми открыли поле, могли знать, что они делают. Возможно, XML не всегда лучше всего подходит для ваших собственных файлов конфигурации.
источник
Основная причина, по которой я могу думать сейчас:
fstab
Файл чаще всего используетсяmount
командаmount
команды началась, вероятно, до 1985 годаисточник
fstab
файл / формат такой же старый, какmount
вам кажется. Согласноman fstab
: « Предок этого формата файлов fstab появился в 4.0BSD. » (BSD формулирует это как « Формат файлов fstab появился в 4.0BSD. »). 4.0BSD был выпущен в 1980 году .