Расширения файлов конфигурации ос windows

Обновлено: 04.07.2024

В вычислении , файлы конфигурации (обычно известный просто как файлы конфигурации ) являются файлы , используемые для настройки параметров и начальных настроек для некоторых компьютерных программ . Они используются для пользовательских приложений , серверных процессов и настроек операционной системы .

Некоторые приложения предоставляют инструменты для создания, изменения и проверки синтаксиса своих файлов конфигурации; иногда у них есть графический интерфейс. Что касается других программ, от системных администраторов можно ожидать, что они будут создавать и изменять файлы вручную с помощью текстового редактора, что возможно, поскольку многие из них представляют собой простые текстовые файлы, редактируемые человеком. Для серверных процессов и настроек операционной системы часто нет стандартного инструмента, но операционные системы могут предоставлять свои собственные графические интерфейсы, такие как YaST или debconf .

Некоторые компьютерные программы читают свои файлы конфигурации только при запуске . Другие периодически проверяют файлы конфигурации на предмет изменений. Пользователи могут дать указание некоторым программам перечитать файлы конфигурации и применить изменения к текущему процессу или даже прочитать произвольные файлы в качестве файла конфигурации. Нет никаких окончательных стандартов или строгих условностей.


СОДЕРЖАНИЕ

Файлы конфигурации и операционные системы

Unix и Unix-подобные операционные системы

В Unix-подобных операционных системах существует множество различных форматов файлов конфигурации, причем каждое приложение или служба потенциально имеют уникальный формат, но существует сильная традиция, когда они представлены в виде простого текста, редактируемого человеком, а простой формат пары ключ-значение - общий. Имя файла расширение .cnf , .conf , .cfg , .cf или .ini часто используется.

Практически все форматы допускают комментарии , и в этом случае отдельные настройки можно отключить, добавив перед ними символ комментария . Часто файлы конфигурации по умолчанию содержат обширную внутреннюю документацию в виде комментариев, а файлы man также обычно используются для документирования формата и доступных опций.

Общесистемное программное обеспечение часто использует конфигурационные файлы , хранящиеся в /etc , в то время как пользовательские приложениях часто используют « dotfile » - файл или каталог в домашней директории с приставкой периода , который в Unix скрывает файл или каталог из случайного списка.

Некоторые файлы конфигурации запускают набор команд при запуске. По общему соглашению такие файлы должны иметь rc в своем имени "", обычно используя имя программы, а затем (.)rc суффикс " .xinitrc ", например , " .vimrc ", " .bashrc ", " xsane.rc ". См. Дополнительные сведения в командах запуска .

В отличие от IBM «s AIX использует объект диспетчера данных базы данных (ODM) , чтобы сохранить большую часть своих системных настроек.

MS-DOS

MS-DOS сама в первую очередь полагаться только на один файл конфигурации CONFIG.SYS . Это был простой текстовый файл с простыми парами ключ-значение (например DEVICEHIGH=C:\DOS\ANSI.SYS ) до MS-DOS 6, в которой был представлен формат стиля INI-файла. Был также стандартный текстовый командный файл с именем , AUTOEXEC.BAT который провел серию команд на ботинке . Оба эти файла были сохранены до Windows 98SE , которая по-прежнему работала поверх MS-DOS.

Пример CONFIG.SYS для MS-DOS 5:

Приложения DOS использовали большое количество отдельных файлов конфигурации, большинство из которых были двоичными, проприетарными и недокументированными, и не было общих соглашений или форматов.

Майкрософт Виндоус


Приложение REGEDIT, используемое для редактирования данных реестра Windows

Ранние операционные системы семейства Microsoft Windows широко использовали простые текстовые файлы INI (от «инициализации»). Они служили основным механизмом для настройки операционной системы и функций приложения. Эти API - интерфейсы для чтения и записи из них до сих пор существуют в Windows, но после 1993 года, Microsoft начала разработчикам Держитесь далеко от использования INI файлов и к хранящих настройки в реестре Windows , иерархической базы данных для настройки конфигурации магазина, который был введен в этом году с Windows NT .

macOS

Список свойств является стандартным форматом файла конфигурации в MacOS (а также в IOS , NeXTSTEP , GNUstep и какао - приложений). Он использует расширение имени файла .plist .

IBM OS / 2

IBM OS / 2 использует двоичный формат, также с суффиксом .INI, но он отличается от версий для Windows. Он содержит список списков нетипизированных пар ключ-значение. Два файла управляют общесистемными настройками: OS2.INI и OS2SYS.INI. Разработчики приложений могут выбрать, использовать ли их или создать определенный файл для своих приложений.

Форматы сериализации

Существует ряд универсальных форматов сериализации , которые могут представлять сложные структуры данных в легко сохраняемом формате, и они часто используются в качестве основы для файлов конфигурации, особенно в программных приложениях и библиотеках с открытым исходным кодом и платформенно- зависимых. В спецификации , описывающие эти форматы обычно доступны для общественности, тем самым увеличивая доступность анализаторами и излучателей по языкам программирования.

В вычислениях , файлы конфигурации (обычно известные просто как файлы конфигурации ) - это файлы , используемые для настройки параметров и начальных настроек для некоторых компьютерных программ . Они используются для пользовательских приложений , серверных процессов и настроек операционной системы .

Некоторые приложения предоставляют инструменты для создания, изменения и проверки синтаксиса своих файлов конфигурации; иногда они имеют графический интерфейс. Что касается других программ, от системных администраторов можно ожидать, что они будут создавать и изменять файлы вручную с помощью текстового редактора, что возможно, потому что многие из них представляют собой простые текстовые файлы, редактируемые человеком. Для серверных процессов и настроек операционной системы часто нет стандартного инструмента, но операционные системы могут предоставлять свои собственные графические интерфейсы, такие как YaST или debconf .

. Некоторые компьютерные программы только читают свои файлы конфигурации. при запуске . Другие периодически проверяют файлы конфигурации на предмет изменений. Пользователи могут дать указание некоторым программам перечитать файлы конфигурации и применить изменения к текущему процессу или действительно прочитать произвольные файлы в качестве файла конфигурации. Нет никаких окончательных стандартов или строгих соглашений.


Содержание

Файлы конфигурации и операционные системы

Unix и Unix-подобные операционные системы

Почти все форматы допускают комментарии , и в этом случае отдельные настройки можно отключить, добавив перед символом комментария . Часто файлы конфигурации по умолчанию содержат обширную внутреннюю документацию в виде комментариев, а файлы man также обычно используются для документирования формата и доступных опций.

Общесистемное программное обеспечение часто использует файлы конфигурации, хранящиеся в /etc, в то время как пользовательские приложения часто используют «точечный файл » - файл или каталог в домашнем каталоге с префиксом период , который в Unix скрывает файл или каталог из случайного списка.

Некоторые файлы конфигурации запускают набор команд при запуске. По общему соглашению такие файлы должны иметь в своем имени « rc », обычно с использованием имени программы, а затем суффикса « (.) Rc », например « .xinitrc », « .vimrc », « .bashrc », « xsane.rc ». Подробнее см. команды выполнения .

Напротив, IBM AIX использует базу данных Object Data Manager (ODM) для хранения большей части своих системных настроек.

MS-DOS

MS-DOS в первую очередь полагалась только на один файл конфигурации, CONFIG.SYS . Это был простой текстовый файл с простыми парами ключ-значение (например, DEVICEHIGH = C: \ DOS \ ANSI.SYS ) до MS-DOS 6, в которой был представлен формат стиля INI-файла. Также был стандартный текстовый командный файл с именем AUTOEXEC.BAT , который запускал серию команд при загрузке . Оба этих файла сохранялись до Windows 98SE , которая по-прежнему работала поверх MS-DOS.

Пример CONFIG.SYS для MS-DOS 5:

Приложения DOS использовали большое количество отдельных файлов конфигурации, большинство из них двоичные, проприетарные и недокументировано - и не было общих соглашений или форматов.

Microsoft Windows


Приложение REGEDIT, используемое для редактирования данных реестра Windows

Раннее семейство операционных систем Microsoft Windows сильно используются простые текстовые файлы INI (от "инициализации"). Они служили основным механизмом для настройки операционной системы и функций приложения. API-интерфейсы для чтения и записи из них все еще существуют в Windows, но после 1993 года Microsoft начала уводить разработчиков от использования файлов INI в сторону хранения настроек в реестре Windows , иерархической структуре. база данных для хранения параметров конфигурации, которая была представлена ​​в том же году с Windows NT .

macOS

Список свойств - это стандартный формат файла конфигурации в macOS (а также в приложениях iOS , NeXTSTEP , GNUstep и Cocoa ). Он использует расширение имени файла .plist .

IBM OS / 2

IBM OS / 2 использует двоичный формат, также с суффиксом .INI , но это отличается от версий для Windows. Он содержит список списков нетипизированных пар "ключ-значение". Два файла управляют общесистемными настройками: OS2.INI и OS2SYS.INI. Разработчики приложений могут выбрать, использовать ли их или создать определенный файл для своих приложений.

Форматы сериализации

Существует ряд универсальных форматов сериализации , которые могут представлять сложные структуры данных в легко сохраняемом формате, и они часто используются в качестве основы для файлы конфигурации, особенно в программных приложениях и библиотеках с открытым исходным кодом и платформенно-нейтральных . спецификации , описывающие эти форматы, обычно становятся общедоступными, что увеличивает доступность парсеров и эмиттеров для разных языков программирования.

Приветствую, встал у меня такой вопрос: какой формат конфигурации наиболее удобен администратору для ручного редактирования (ну, или просто пример софта с «идеальным» конфигом). Раньше я пользовался nginx/bind подобным вариантом:


Потом взбрело в голову сделать xml конфигурацию для предполагаемого веб-интерфейса, который в итоге этот xml даже не читает (используя ограниченный набор опций, организуемый через json файл).

Поэтому у меня возникло сильное желание снова перейти на удобный формат для редактирования человеком. Единственное, что я не понимаю, это как удобно организовать «именнованные» секции. В xml это выглядит так:

Но пока мыслей, как это сделать в секционной конфигурации, у меня пока нет.

  • Вопрос задан более трёх лет назад
  • 5022 просмотра
Yaml — очень красиво! Но он очень плох приколами с табуляцией. И самое главное, его слишком неудобно использовать на мелких устройствах.
Если конфиг файл нельзя изменить в андроидном терминальчике — то многие такой формат обойдут стороной. Я бы предложил оставить XML, он сейчас много где используется, администраторы к нему привычны, красиво просматривается/редактируется любым браузером/редактором умеющим делать разметку.

Q2W

JSON наше всё. Использую в своих проектах — очень доволен. JSON или что-то похожее на джейсон? В нём же коментариев нет.

Q2W

Смотря для чего этот конфиг. Например, для программ на Perl я чего только не испробовал — лучшим оказался формат самого перла.

JSON — для людей, XML — для компьютеров, ini — для Windows ;)
Любой админ обязан знать все эти форматы, иначе, какой из него админ.
Но ИМХО, так как json лаконичнее, чем XML и более универсален, чем ini — для конфигов самое оно.

Как уже написали выше — обязательно нужна поддержка include.

Если уж добавлять в json всякие вещи, типа инклюдов и embedded lua, то, наверное, стоит как минимум избавиться от его недостатков, типа огромного количества кавычек (что вообще для human editable очень плохо) и излишней лаконичности. Возможно, будет удобен такой вариант:


Попытка совместить лаконичность json с удобством конфига (в том числе, и для автоматической генерации).

В JSON нету комментариев. Так что по крайней мере // + /* */ жаваскриптовские нужно вставить.

Сама же система активно использует lua, но я представил себе конфиг на lua и решил, что это слишком для рядового админа. xml, yaml, json — примерно из той же серии: слишком сложно для редактирования неподготовленным человеком. Я считаю, что заставлять админа учить язык программирования или же мучиться с json/xml — фашизм, хотя yaml тоже совершенно неочевиден для рядового админа. Другое дело, конфигурация секциями, привычная по nginx, dovecot, bind итп. Единственный вопрос в выразительности.

RicoX

Лично мне удобен формат mysql или например smb, то-есть все в одном конфиге, разные секции разделены блоками
[blockname]


[bolkname2]


Но в принципе не критичен любой формат, главное вменяемая документация. ini хорош, если нет вложенности секций. У меня не этот случай.

RicoX

Тогда секциями, вполне привычно и наглядно. XML обилием текста замыливает глаз. XML ужасен. Nginx конфиг вполне себе удобен, не знаю зачем вы что-то другое ищете. Отдельно — если не поддерживаете include — обязательно добавьте.

В общем, я попытался рассмотреть разные варианты, и больше всего мне импонирует json-совместимый формат с рядом послаблений и расширений. Основная «фишка» формата — возможность тем же парсером разбирать json и модифицированный формат (и точно также выполнять дамп объекта в разные форматы).

1) Воспринимать файл, как описание объекта, что избавляет нас от <> верхнего уровня.
2) Ключи объекта не требуют обрамления кавычками, кроме того, вместо ':' допустимо применять '=', а если значение является объектом или массивом, вообще не требовать наличия сепаратора. То есть, допустимые варианты такие:


3) Запятые, разделяющие значения могут быть опущены или заменены на символы ';' символ перевода строки воспринимать как окончание значения (если он не экранирован обратным слешем), то есть, допустимо:

Если формат получится удобным для работы, то можно будет оформить парсер как отдельную библиотеку.

Задание профиля с помощью командной строки – метод далеко не всегда удобный. Даже при работе с самой командной строкой используется окружение для сохранения настроек, чтобы не задавать их всякий раз и для всякой команды. Что уж говорить о сложных системных службах, свойства которых должны сохраняться не от сеанса к сеансу, а постоянно (в том числе при перезагрузке системы). Вывод прост: профиль необходимо держать в файле, вроде того, что создается по команде "сохранить настройки".

Однако сам подход к хранению профиля в файле, при котором пользователь не может изменять этот файл напрямую, а пользуется "умными" конфигураторами, удобен только в случаях, когда настроек много, а цена ошибки невелика (например, при настройке внешнего вида рабочего стола). В общем случае довольно сложно задать поведение системы на основании описания (часто неявного) свойств того, что эта система должна получать в результате. Иными словами, из описания того, что должно получиться, далеко не всегда можно автоматически сделать вывод, как оно должно получаться.

Конфигурационный файл. Текстовый файл, содержащий настройки какой-нибудь части системы (утилиты, демона и т. п.). Как правило, считывается ею при запуске. Типичный для Linux способ организации профиля .

Одним словом, если есть конфигурационный файл , то должны быть и средства редактирования этого файла. Учитывая, что в Linux реализована высокоразвитая система хранения и переработки (как ручной, так и автоматической) данных в текстовом виде, изобретать какой-то новый формат – все равно что изобретать велосипед. Тем более, что именно текст, разделенный на строки и слова, лучше всего подходит тогда, когда есть четкое деление профиля на объекты управления и их свойства (например, настройки какого-нибудь демона и значения этих настроек). Вдобавок, именно со структурированными текстами отменно управляются текстовые редакторы Linux: Vi, Emacs и др:

Вот как выглядит конфигурационный файл для Vim , написанный Мефодием на основе файла, взятого у Гуревича. Легко заметить, что файл состоит из команд режима командной строки Vi с комментариями (в отличие от большинства утилит Linux, в Vi комментарии начинаются на """). Символы " ^O " и " ^M " – это именно соответствующие управляющие символы (вставленные в текстовый файл с помощью " ^V ", см. лекцию 9). Такой конфигурационный файл легко понимать и изменять.

Однако хранить настройки специфической программы (не нужные всем остальным) в окружении – не самое удачное решение: синтаксис, задающий переменную окружения , слишком прост ( имя_переменной=значение ), а самих переменных становится слишком много, поэтому при просмотре трудно выделить, какая из них к какой группе настроек относится. Если пытаться упаковать все настройки в значение одной переменной, это значение окажется трудночитаемым, и все преимущество текстового формата сойдет на нет. Например, стандартный конфигурационный файл утилиты ls (точнее, только ее цветовых предпочтений) – /etc/DIR_COLORS (его можно подменить личным файлом

/.dir_colors ) занимает около ста строк вместе с комментариями. Команда ls использует не этот файл, а создаваемую утилитой dircolors переменную LS_COLORS , значение которой – 600-символьная строка без всяких комментариев.

Если профиль слишком велик, держать его в одном конфигурационном файле – значит, доставлять пользователю сомнительное удовольствие разбирать этот файл целиком даже при необходимости внести минимальное изменение. Методов борьбы с неудобочитаемостью несколько. В частности, уже известный по лекции 10 механизм " .d ": файл разделяется на несколько независимых друг от друга файлов так, что редактировать приходится только один из файлов, а программа во время самонастройки считывает все.

Другой способ опирается на то, что изменения, которые пользователь вносит в профиль , как правило, существенно меньше объема всего профиля . Поэтому может быть выгодно хранить все настройки по умолчанию в каком-нибудь файле, менять который вообще не надо, а файл пользовательских настроек использовать как бы "поверх", изменяя профиль в соответствии с ними после того, как выставлен профиль по умолчанию. Дополнительное преимущество такого способа – в том, что пользователь всегда может подглядеть в "большой" файл, чтобы узнать, как оформляется та или иная настройка. Например, утилита updfstab, которая изменяет содержимое /etc/fstab при появлении или удалении съемного дискового носителя (например, лазерного диска), считывает данные из конфигурационного файла /etc/updfstab.conf . Сам этот файл состоит из единственной строки: include /etc/updfstab.conf.default , что приводит к чтению файла с настройками по умолчанию, где задан способ работы со многими съемными устройствами системы. Если администратору нужно как-то изменить поведение updfstab в отношении определенного устройства, он копирует соответствующую группу настроек из updfstab.conf.default в updfstab.conf после строчки include.. . и исправляет их. То, что эти группы настроек читаются дважды, не играет особой роли: чтение коротких файлов выполняется быстро.

Наконец, третий способ сделать конфигурационный файл удобочитаемым — секционирование профиля , когда все настройки разбиваются на группы, каждой группе дается собственное имя, и синтаксис конфигурационного файла проектируется так, чтобы границы групп хорошо различались при просмотре. В сущности, этот способ – предок схемы " .d ", где группе соответствует отдельный файл, однако нередки ситуации, когда разбивать на файлы неудобно (например, если группы не полностью независимы, поэтому может понадобиться редактировать их сразу несколько). Конфигурационный файл утилиты дозвона wvdial , например, секционируется по адресату (провайдеру) плюс отдельная секция "по умолчанию". Сами секции отделяются друг от друга заголовками, заключенными в квадратные скобки:

Утилита wvdial обладает высокоразвитым искусственным интеллектом: она самостоятельно догадывается, какой именно тип идентификации используется на сервере. Например, "с той стороны" может оказаться терминал Linux, которому требуется сначала ввести обыкновенное входное имя и пароль, затем надо получить командную строку, запустить на сервере сетевой демон pppd , и только после этого запустить pppd на собственной машине. Другой вариант: pppd на сервере уже запущен, а настройки "Username" и "Password" означают идентификационную информацию протокола CHAP , используемого pppd . Обо всем этом и о многом другом wvdial способна догадаться,так же как wvdialconf умел определять, какое же из устройств является модемом.

Однако на любой искусственный интеллект найдется непостижимая ему жизненная ситуация. На одном из серверов (секция "Dialer hotspace") тоже стоит программа с зачатками искусственного интеллекта, которая тоже пытается определить, каким способом хочет идентифицироваться позвонивший. Оттого эти два кудесника, созвонившись, все ждут, пока кто-нибудь не проявит себя. Помогает настройка TOnline , которая заставляет wvdial немедленно задействовать протокол ppp , на что сервер, подумавши "ах, ppp!", с облегчением запускает pppd . Остается вопрос: почему эта полезная настройка никак не отражена в документации (ее нашел в исходных текстах программы Гуревич)? Не потому ли, что пара wvdialconf-wvdial не по-Linux-овски стремится все делать за пользователя, а стало быть, пользовательская документация для разработчиков этой программы – не главное?

Идею чтения настроек по умолчанию можно развить. Оказывается, бывает удобно, когда описание настройки помещено не в руководство, а непосредственно в конфигурационный файл в виде комментариев. Тогда при изменении этой настройки пользователь сразу видит, что она собой представляет, при этом отпадает необходимость сначала находить строчку в файле, а потом искать ее же в руководстве. Такой распространенный способ оформления называется самодокументированием профиля . Например, файл /etc/man.conf , управляющий работой команды man , оформлен в самодокументированном стиле:

Пример 12.5. Самодокументированный конфигурационный файл

Мефодий, может быть, и не понял бы сразу, зачем команде man использовать утилиту cmp, однако в поясняющем комментарии написано: когда нужно показать несколько руководств разом, они предварительно сравниваются, и показываются только несовпадающие.

Если пойти еще дальше, то можно создать несколько различных файлов с примерами настроек, чтобы пользователь мог взять один из них и довести до нужного ему состояния. Именно такую – демонстрационную – настройку Мефодий и включил в качестве настройки по умолчанию в свой .vimrc (в первой строке). Кстати, на самом деле профиль Vim весьма сложен, но большинство его настроек по умолчанию находятся в различных файлах дерева каталогов /usr/share/ vim – эдакая "схема .d/.d ", где файлы профиля , соответствующие подгруппам настроек, лежат в подкаталогах, соответствующих группам. Включение определенного настроечного файла может происходить неявно: например, строчка colorscheme desert из .vimrc приводит к чтению /usr/share/ vim /colors/desert. vim .

Конфигурационные файлы могут иметь довольно замысловатый синтаксис, если соответствуют сложным структурам данных (таковы, например, настройка irc-клиента irssi ) или содержать в себе дополнительные средства самодокументирования (например, файл настройки текстового www-броузера lynx не просто хорошо документирован, но и размечен теми же средствами, какие используются в самом броузере для представления HTML).

Читайте также: