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

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

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

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

4 ответа

Решение

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

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

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

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

Сопоставление местоположений XDG Base Directory Specification для "Моего приложения" в 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: "Не загрязняйте пространство пользователя".

Рекомендации:

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

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

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

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

Вот выбор, сделанный os пакет в golang:

  • XDG_CACHE_HOME$HOME/Library/Caches

  • XDG_CONFIG_HOME$HOME/Library/Application Support

Другие вопросы по тегам