在Mac OS X上等效XDG_CONFIG_HOME和XDG_DATA_HOME?

时间:2010-07-30 17:28:31

标签: macos configuration-files

我打算开发一个跨平台的脚本。在Linux和其他操作系统上,它将在XDG_CONFIG_HOME中存储配置,在XDG_DATA_HOME中存储数据文件(特别是下载的插件)。在Windows上,它将使用APPDATA(除非有人有更好的主意)。但是,在Mac OS X上做什么是正确的?

在我第一眼浏览一个方便的Macbook的~/Library目录时,我看到了PreferencesApplication Support个文件夹。我原本打算使用这些,但Preferences似乎只包含反向域名的帖子,如com.apple.foo.bar.baz.plistApplication Support中的每个文件夹都对应/Applications中的一个包,所以我不确定系统对不符合标准的文件的反应有多好。将它们直接存储在~/Library中可能是一种选择,但如果有更好的位置,我不想用流浪myscript.conf文件污染它。

我应该在哪里存储这些文件? (请不要只说~/.myscript。我知道这是Unix的传统,但是在主目录中看到随机的dotfiles让我感到很烦恼。)

3 个答案:

答案 0 :(得分:30)

将Apple的XDG Base Directory规范的各种路径文档进行比较,大致与以下位置相符:

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

在Mac OS X上映射“我的应用程序”的XDG基本目录规范位置可能如下所示:

  • 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的指导原则:“不要污染用户空间”。

参考文献:

答案 1 :(得分:6)

我同意OJFord's comment:如果您要编写脚本,只需遵循XDG基本目录会更好。

理性:

  1. XDG_CONFIG_HOME中的名称通常是小写的裸名,例如git~/Library/Preferences/中的域名通常以com.apple.foo-bar之类的反向域名或Foo Bar之类的首字母大写空格分隔的域名为范围。
  2. GUI应用程序放置在/Applications中时,它们一直遵循macOS约定。您无需将脚本放在/Applications中;您将它们放在UNIX-specific directorys中。最好保持一致。
  3. ~/Library/Preferences/充满了.plist个。我所知道的没有跨平台脚本正在使用属性列表。
  4. 用户可能希望分别同步跨平台配置和仅适用于macOS的配置。

例如,Git将其配置文件放置在XDG_CONFIG_HOME/git/config中,而不是~/Library/Preferences/Git/config中。对我来说很有道理。

注意

我只针对配置文件($XDG_CONFIG_HOME)和数据文件($XDG_DATA_HOME)提出了意见;对于缓存文件,它变得微妙。根据{{​​3}},默认情况下How-To Geek中不包含~/Library/Caches目录。我不在乎缓存文件夹,因为无论如何我都不备份两个目录。

答案 2 :(得分:4)

我会使用~/Library/Application Support/script_name/Application Support中的子目录通常由各种应用程序使用,包括Apple自己的软件。但它并没有被操作系统强制执行,也没有绑定到/Applications内的应用程序。因此,您可以完全自由地在其中创建自己的目录。

对于OS X的目录结构,请参阅this Apple document