Подтвердить что ты не робот

Эквиваленты XDG_CONFIG_HOME и XDG_DATA_HOME на Mac OS X?

Я планирую разработать кросс-платформенный script. В Linux и других операционных системах он сохранит конфигурацию в XDG_CONFIG_HOME и файлы данных (в частности, загруженные плагины) в XDG_DATA_HOME. В Windows он будет использовать APPDATA для обоих (если у кого-то нет лучшей идеи). Однако, что было бы правильным в Mac OS X?

С первого взгляда в удобном каталоге Macbook ~/Library я увидел папки Preferences и Application Support. Первоначально планировалось использовать их, но Preferences кажется, просто содержит plists с обратными именами домена, такими как com.apple.foo.bar.baz.plist, и каждая папка в Application Support соответствует набору в /Applications, поэтому я не уверен, насколько хорошо система будет реагировать на файлы, которые не соответствуют его стандартам. Хранение их непосредственно в ~/Library может быть вариантом, но я не хочу загрязнять его с помощью бродячего файла myscript.conf, если для него лучше.

Где я должен хранить эти файлы? (И, пожалуйста, не говорите просто ~/.myscript. Я знаю, что это традиция Unix, но мне не нравится видеть случайные dotfiles в домашнем каталоге.)

4b9b3361

Ответ 1

Я бы использовал ~/Library/Application Support/script_name/. Подкаталоги внутри Application Support обычно используются различными приложениями, включая собственные программные продукты Apple. Но он не применяется ОС и не привязан к приложениям внутри /Applications. Таким образом, вы можете свободно создавать в нем свой собственный каталог.

Для структуры каталогов OS X в целом см. этот документ Apple.

Ответ 2

Сравнение документации Apple для различных путей к спецификациям базового каталога XDG приближается к следующим местоположениям:

  • XDG_CONFIG_HOME ▶ ︎ ~/Library/Preferences/
  • XDG_DATA_HOME ▶ ︎ ~/Library/
  • XDG_CACHE_HOME ▶ ︎ ~/Library/Caches/

Сопоставление местоположений спецификации базового каталога XDG для "Моего приложения" в Mac OS X может выглядеть так:

  • XDG_CONFIG_HOME ▶ ︎ ~/Library/Preferences/name.often.with.domain.myapp.plist
  • XDG_DATA_HOME ▶ ︎ ~/Library/My App/
  • XDG_CACHE_HOME ▶ ︎ ~/Library/Caches/My App/

Эти отображения кажутся довольно разумными, но они не точны. Некоторые типы кеша или данных могут быть подходящими для ~/Library/Application Support/My App, а другие могут быть лучше всего в временных папках или наборе приложений. Все это по соглашению, и те же причины для использования лучших мест XDG_ применяются для использования лучших мест в системе Mac OS X.

Ваше раздражение в ~/.myscript соответствует рекомендациям Apple: "Не загрязняйте пространство пользователя".

Литература:

Ответ 3

Я согласен с комментарием OJFord: если вы пишете сценарий, лучше просто следуйте XDG Base Directory.

Обоснования:

  1. Имена в XDG_CONFIG_HOME как правило, представляют собой XDG_CONFIG_HOME имена, такие как git; те, что в ~/Library/Preferences/ как правило, ограничены обратными доменными именами, такими как com.apple.foo-bar, или именами, разделенными заглавными буквами, начинающимися с заглавной буквы, такими как Foo Bar.
  2. Приложения с графическим интерфейсом следовали соглашениям macOS при размещении в /Applications. Вы не размещаете свой скрипт в /Applications; Вы помещаете их в директории, специфичные для UNIX. Лучше быть последовательным.
  3. ~/Library/Preferences/ полна .plist s. Ни один кросс-платформенный скрипт, который я знаю, не использует списки свойств.
  4. Пользователи могут захотеть синхронизировать кросс-платформенную конфигурацию и только MacOS.

Например, Git помещает их конфигурационный файл в XDG_CONFIG_HOME/git/config, а не в ~/Library/Preferences/Git/config. Имеет смысл для меня.

нота

Я сделал это только для файлов конфигурации ($XDG_CONFIG_HOME) и файлов данных ($XDG_DATA_HOME); для файлов кэша это становится тонким. Согласно How-To Geek, каталог ~/Library/Caches исключен из Time Machine по умолчанию. Меня это не волнует, так как я не копирую ни один каталог.