Linux - это ядро операционной системы. У него нет концепции пользовательских каталогов.
Существует несколько дистрибутивов Linux. Структура файловой системы определяется дистрибутивом. Большинство дистрибутивов соответствуют стандарту POSIX и следуют (в различной степени) стандарту Иерархия файловых систем от Linux Foundation, который аналогичен структурам каталогов других UNIX-подобных систем. Тем не менее, дистрибутивы обычно позволяют пользователю использовать файловую систему в нестандартных конфигурациях. Например, они обычно не вынуждают домашний каталог пользователей находиться под /home
.
POSIX указывает несколько переменных среды, которые имеют отношение к этому контексту:
HOME
Система должна инициализировать эту переменную во время входа в систему как путь к домашнему каталогу пользователя.
TMPDIR
Эта переменная должна представлять путь к каталогу, доступному для программ, которым требуется место для создания временных файлов.
Переменные окружения могут быть доступны с помощью std::getenv
в C ++.
В настольных системах структура каталогов также в некоторой степени определяется средой рабочего стола, из которых доступно несколько. freedesktop.org предоставляет неофициальные спецификации для взаимодействия различных сред рабочего стола. Если DE соответствует XDG Base Directory Specification , должны быть доступны следующие переменные среды:
$ XDG_DATA_HOME определяет базовый каталог, относительно которого должны храниться пользовательские файлы данных. Если $ XDG_DATA_HOME либо не установлен, либо пуст, следует использовать значение по умолчанию, равное $ HOME / .local / share.
$ XDG_CONFIG_HOME определяет базовый каталог, относительно которого должны храниться файлы конфигурации конкретного пользователя. Если $ XDG_CONFIG_HOME либо не установлен, либо пуст, следует использовать значение по умолчанию, равное $ HOME / .config.
$ XDG_DATA_DIRS определяет упорядоченный по предпочтениям набор базовых каталогов для поиска файлов данных в дополнение к базовому каталогу $ XDG_DATA_HOME. Каталоги в $ XDG_DATA_DIRS должны быть разделены двоеточием ':'.
Если $ XDG_DATA_DIRS либо не установлен, либо пуст, следует использовать значение, равное / usr / local / share /: / usr / share /.
freedesktop.org также предоставляет утилиту xdg-user-dirs :
xdg-user-dirs - это инструмент, помогающий управлять «хорошо известными» пользовательскими каталогами, такими как папка рабочего стола и папка музыки. Он также обрабатывает локализацию (то есть перевод) имен файлов.
$ (XDG_CONFIG_HOME) /user-dirs.dirs указывает текущий набор каталогов для пользователя. Этот файл имеет формат оболочки, поэтому к нему легко получить доступ из сценария оболочки. Этот файл также может быть изменен пользователями (вручную или через приложения) для изменения используемых каталогов.
Так, в случае FOLDERID_RoamingAppData
вам, вероятно, следует использовать один из $XDG_x
в зависимости от варианта использования, возвращаясь к соответствующему значению по умолчанию относительно $HOME
, как указано.