Введение

Файл программного обеспечения, используемый для настройки начальных параметров компьютерной программы.

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

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

В операционных системах, подобных Unix, существует множество различных форматов файлов конфигурации, и каждое приложение или служба потенциально может иметь уникальный формат. Однако существует сильная традиция использования простого текста, редактируемого вручную, и распространён формат пар ключ-значение. Часто используются расширения имен файлов cnf, conf, cfg, cf или ini. Практически все форматы допускают комментарии, в этом случае отдельные настройки можно отключить, добавив перед ними символ комментария. Часто файлы конфигурации по умолчанию содержат обширную внутреннюю документацию в виде комментариев, а также обычно используются man-страницы для документирования формата и доступных опций. Системное программное обеспечение часто использует конфигурационные файлы, хранящиеся в /etc, в то время как пользовательские приложения часто используют "dotfile" – файл или каталог в домашнем каталоге, имя которого начинается с точки, что в Unix скрывает файл или каталог из обычного списка. Поскольку это приводит к беспорядку, новые пользовательские приложения обычно создают собственную папку в каталоге config – стандартизированном подкаталоге домашнего каталога. Некоторые файлы конфигурации выполняют набор команд при запуске. Распространённая практика – включать "rc" в имя таких файлов, обычно используя имя программы с суффиксом "(. )rc", например ".xinitrc", ".vimrc", ".bashrc", "xsane.rc". Подробности см. в разделе о командах запуска. В отличие от этого, AIX от IBM использует базу данных Object Data Manager (ODM) для хранения большей части системных настроек.

Microsoft Windows

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

macOS

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

IBM OS/2

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

Операционные системы HarmonyOS и OpenHarmony

Операционные системы на основе HarmonyOS и OpenHarmony используют файл конфигурации “config.json” в корневом каталоге каждого приложения HAP. Он содержит три модуля: `app`, `deviceConfig` и `Module`. Файл config.json соответствует формату JSON, где каждая запись состоит из атрибута и его значения. Порядок следования значений атрибутов произвольный, но каждый атрибут должен быть уникальным и не повторяться. Значение, присвоенное каждому атрибуту, соответствует базовым типам данных JSON. HarmonyOS DevEco Studio предоставляет два способа редактирования config.json: представление редактирования кода и визуальное представление редактирования. Объект `app` содержит общие сведения о конфигурации приложения, как показано в файле config.json конфигурации базового приложения HarmonyOS. `DeviceConfig` содержит сведения о конфигурации для конкретных устройств, включая значения по умолчанию, Телефон, Планшет, ПК, Телевизор, Автомобиль, Носимые устройства, liteWearable и smartVision. Настройки, указанные под меткой “по умолчанию”, применяются ко всем устройствам. Если для других устройств требуются уникальные настройки, необходимо сконфигурировать параметры под соответствующей меткой типа устройства. Объект `Module` содержит сведения о конфигурации пакета HAP, основные атрибуты, которые каждая Ability должна определить (например, имя пакета, имя класса, тип и возможности, предоставляемые Ability), а также разрешения, необходимые приложению для доступа к системе или другим защищенным разделам приложения. `MainAbility` указывает имя основной Ability, точки входа пакета HAP.

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

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