Эквиваленты 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.
Обоснования:
- Имена в
XDG_CONFIG_HOME
как правило, это маленькие имена, такие какgit
; те, в~/Library/Preferences/
обычно ограничены обратными доменными именами, такими какcom.apple.foo-bar
или имена, начинающиеся с прописной буквы, разделенные пробелами, напримерFoo Bar
, - Приложения GUI следовали соглашениям MacOS, когда они помещены в
/Applications
, Вы не размещаете свой сценарий в/Applications
; Вы помещаете их в директории, специфичные для UNIX. Лучше быть последовательным. ~/Library/Preferences/
полон.plist
s. Ни один кросс-платформенный скрипт, который я знаю, не использует списки свойств.- Пользователи могут захотеть синхронизировать кросс-платформенную конфигурацию и только 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