Я подаю заявку, которая читает/пишет в файлы в ~/.config папку; однако, я хочу удостовериться, что это работает под всеми системами. .config
названные другие вещи для различных системных языков? Есть ли лучший способ получить доступ к его значению, чем использование hardcoded .config
строка? (а-ля переменная среды)
Какова лучшая практика для этого? Если нет никакой установленной лучшей практики, каков самый простой подход, который гарантирует желаемый результат?
Тот каталог конфигурации указан стандартом Спецификации Базового каталога XDG.
Ответ на Ваш вопрос находится в разделе Переменных среды:
$XDG_CONFIG_HOME
определяет базовый каталог, относительно которого пользователя должны быть сохранены определенные конфигурационные файлы. Если$XDG_CONFIG_HOME
или не установлен или не пуст, значение по умолчанию, равное$HOME/.config
должен использоваться.
Обязательно также считайте Основы, гарантируйте использование правильных каталогов для правильных файлов.
Можно также хотеть знать, что сделать когда $HOME
не установлен. Это не указано XDG, однако что делают некоторые приложения должен бросить ошибку и выход. С другой стороны, можно получить текущий идентификатор пользователя через getuid(2)
и используйте getpwuid(3)
извлечь корневой каталог.
Это - часть Спецификации Базового каталога XDG:
$XDG_CONFIG_HOME определяет базовый каталог, относительно которого пользователя должны быть сохранены определенные конфигурационные файлы. Если $XDG_CONFIG_HOME или не установлен или не пуст, значение по умолчанию, равное $HOME/.config, должно использоваться.