Расположение файлов ini/config в linux/unix? - программирование
Подтвердить что ты не робот

Расположение файлов ini/config в linux/unix?

Два вопроса, действительно:

(1) Существует ли стандартное соглашение о размещении файлов конфигурации? Для системных или квазисистемных программ они, как правило, находятся где-то в /etc. Для обычных прикладных программ или pgms кажется менее понятным, что с недостаточными привилегиями для /etc.

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

4b9b3361

Ответ 1

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

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

Ответ 2

Вы должны придерживаться своего приложения в Спецификация базового каталога XDG. Большинство ответов здесь либо устарели, либо неправильно.

Ваше приложение должно хранить и загружать файлы данных и конфигурации в/из каталогов, указанных следующими переменными среды:

  • $XDG_DATA_HOME (по умолчанию: "$HOME/.local/share"): файлы данных, специфичные для пользователя.
  • $XDG_CONFIG_HOME (по умолчанию: "$HOME/.config"): пользовательские файлы конфигурации.
  • $XDG_DATA_DIRS (по умолчанию: "/usr/local/share/:/usr/share/"): упорядоченный набор каталогов системных данных.
  • $XDG_CONFIG_DIRS (по умолчанию: "/etc/xdg"): упорядоченные по порядку каталоги конфигурации системы.
  • $XDG_CACHE_HOME (по умолчанию: "$HOME/.cache"): не связанные с данным файлы данных.

Сначала вы должны определить, соответствует ли этот файл:

  • Файл конфигурации ($XDG_CONFIG_HOME:$XDG_CONFIG_DIRS);
  • Файл данных ($XDG_DATA_HOME:$XDG_DATA_DIRS); или
  • Необязательный (кеш) файл ($XDG_CACHE_HOME).

Рекомендуется, чтобы ваше приложение помещало свои файлы в подкаталог вышеуказанных каталогов. Обычно что-то вроде $XDG_DATA_DIRS/<application>/filename или $XDG_DATA_DIRS/<vendor>/<application>/filename.

При загрузке сначала вы пытаетесь загрузить файл из каталогов, специфичных для пользователя ($XDG_*_HOME), а в случае сбоя - из системных каталогов ($XDG_*_DIRS). При сохранении сохраняйте только каталоги, зависящие от пользователя (поскольку у пользователя, вероятно, не будет доступа на запись в системные каталоги).

Для других, более ориентированных на пользователя каталогов, обратитесь к спецификации XDG User Directories. Он определяет каталоги для рабочего стола, загрузки, документы, видео и т.д.

Ответ 3

Новые приложения

Следуйте Спецификация базового каталога XDG обычно ~/.config/yourapp/* может быть INF, JSON, YML или любым другим форматом, плавающим на вашей лодке, и любыми файлами.. yourapp должно совпадать с вашим исполняемым именем или быть помещено в папку с вашей организацией/компанией/именем пользователя/дескриптором на ~/.config/yourorg/yourapp/*

Старые приложения

Конфигурация для пользователя, как правило, прямо в вашем домашнем каталоге...

  • ~/.yourapp файл для одного файла
  • ~/.yourapp/ для нескольких файлов + данных, обычно в ~/.yourapp/config

Глобальные конфигурации обычно находятся в каталоге /etc/appname или /etc/appname/.

Глобальные данные приложения: /var/lib/yourapp/

Данные кэша: /var/cache/

Данные журнала: /var/log/yourapp/


Дополнительная информация из tutorialhelpdesk.com

Структура каталогов Linux/других Unix-подобных систем и подробная информация о каталоге.

В Windows почти все программы устанавливают свои файлы (все файлы) в каталоге с именем "Program Files". Это не так в Linux. Система каталогов классифицирует все установленные файлы. Все файлы конфигурации находятся в /etc, все двоичные файлы находятся в /bin или /usr/bin или /usr/local/bin. Вот вся структура каталогов вместе с тем, что они содержат:

/ - Корневой каталог, который формирует базу файловой системы. Все файлы и каталоги логически содержатся внутри корневого каталога независимо от их физических местоположений.

/bin - Содержит исполняемые программы, которые являются частью операционной системы Linux. Многие команды Linux, такие как cat, cp, ls, more и tar, находятся в /bin

/boot - содержит ядро ​​Linux и другие файлы, необходимые менеджерам загрузки LILO и GRUB.

/dev - Содержит все файлы устройств. Linux обрабатывает каждое устройство как специальный файл. Все такие файлы находятся в /dev.

/etc - содержит большинство конфигурационных файлов системы и скрипты инициализации в подкаталоге /etc/rc.d.

/home - Домашний каталог является родительским для домашних каталогов пользователей.

/lib - содержит файлы библиотеки, включая загружаемые модули драйверов, необходимые для загрузки системы.

/lost+found - Каталог потерянных файлов. У каждого раздела диска есть потерянный + найденный каталог.

/media - Каталог для установки файловых систем на съемных носителях, таких как CD-ROM, гибкие диски и Zip-диски.

/mnt - Каталог временно смонтированных файловых систем.

/opt - Дополнительные пакеты программного обеспечения копируют/устанавливают файлы здесь.

/proc - Специальный каталог в виртуальной файловой системе. Он содержит информацию о различных аспектах системы Linux.

/root - Домашний каталог пользователя root.

/sbin - содержит административные двоичные файлы. Здесь присутствуют команды, такие как mount, shutdown, umount.

/srv - Содержит данные для служб (HTTP, FTP и т.д.), предлагаемых системой.

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

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

/usr - Содержит подкаталоги для многих программ, таких как X Window System.

/usr/bin - Содержит исполняемые файлы для многих команд Linux. Он не является частью основной операционной системы Linux.

/usr/include - Содержит файлы заголовков для языков программирования C и С++

/usr/lib - Содержит библиотеки для языков программирования C и С++.

/usr/local - Содержит локальные файлы. Он имеет похожие каталоги, в которых содержится /usr.

/usr/sbin - содержит административные команды.

/usr/share - Содержит общие файлы, например, файлы конфигурации по умолчанию, изображения, документацию и т.д.

/usr/src - содержит исходный код ядра Linux.

/var - Содержит различные системные файлы, такие как журнал, почтовые каталоги, печатающая катушка и т.д., которые со временем меняются по количеству и размеру.

/var/cache - область хранения кэшированных данных для приложений.

/var/lib - Содержит информацию, относящуюся к текущему состоянию приложений. Программы изменяют это при запуске.

/var/lock - содержит файлы блокировок, проверенные приложениями, так что ресурс может использоваться только одним приложением.

/var/log - содержит файлы журналов для разных приложений.

/var/mail - Содержит электронные письма пользователей.

/var/opt - содержит переменные данные для пакетов, хранящихся в каталоге /opt.

/var/run - Содержит данные, описывающие систему с момента ее загрузки.

/var/spool - Содержит данные, ожидающие какой-либо обработки.

/var/tmp - Содержит временные файлы, сохраненные между перезагрузкой системы.

Ответ 5

  • Обычно в dotfile (например .myprogramrc) в домашнем каталоге пользователя.
  • Конечно, это зависит от программиста, но обычно аргументы командной строки переопределяют все остальное. Если используются переменные среды, они обычно являются альтернативой аргументам командной строки или указывают, где находится конфигурация.

Ответ 6

Для пользовательской конфигурации я заметил тенденцию к удалению от индивидуального ~/.myprogramrc к структуре ниже ~/.config. Например, Qt 4 использует ~/.config/<vendor>/<programname> с настройками по умолчанию QSettings. Основные среды рабочего стола KDE и Gnome также используют структуру файлов под определенной папкой (не уверены, использует ли KDE 4 ~/.config, XFCE использует ~/.config).

Ответ 7

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

(2) Общесистемный ini файл → пользовательский файл ini → среда → параметры командной строки (переход от самого низкого к старшему приоритету)