Эквиваленты XDG_CONFIG_HOME и XDG_DATA_HOME в Mac OS X? - PullRequest
24 голосов
/ 30 июля 2010

Я планирую разработать кроссплатформенный скрипт. В 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, но меня раздражает видеть случайные файлы точек в домашнем каталоге.)

Ответы [ 3 ]

29 голосов
/ 23 февраля 2011

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

  • 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:«Не загрязняйте пространство пользователя».

Ссылки:

7 голосов
/ 11 октября 2018

Я согласен с комментарием 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/ полон .plist с.Ни один из известных мне кросс-платформенных сценариев не использует списки свойств.
  4. Пользователи могут захотеть синхронизировать кросс-платформенную конфигурацию и только MacOS-конфигурацию отдельно.

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

note

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

4 голосов
/ 31 июля 2010

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

Структура каталогов OS X в целом приведена в этом документе Apple .

...