为什么有些应用程序使用 ~/.config/appname 作为其配置数据,而其他应用程序使用 ~/.appname?

Iva*_*van 43 configuration posix freedesktop home dot-files

我注意到一些应用程序将它们的配置文件放在其中,~/.config/appname而其他应用程序为此使用~/.appname(经典方式,AFAIK)。这种区别有什么意义,我的应用程序可以更好地考虑什么?

更新:看起来我的(XUbuntu 11.10 默认)$XDG_CONFIG_HOME 设置为~/并且我系统中的大多数应用程序(如 Mozilla Firefox、Adobe Flash Player、Midnight Commander、Opera、Wine 等)都符合这一点。但仍有许多应用程序(如 Compiz、Deadbeef、VLC、Qt Creator、Google Chrome、XFCE 等)在使用~/.config/。另一个可疑的事情是目录~/.config/本身不是隐藏的(它们的名称中没有点) - 应用程序配置目录是否不希望在不依赖于位置($XDG_CONFIG_HOME 值)的情况下具有恒定的自己的名称?

Mes*_*ion 52

对 jasonwryan 出色回答的补充,解决了您的一些问题:

  • $XDG_CONFIG_HOME设置为~/. 它根本没有设置。所以遵循 XDG 规范的应用程序使用默认的~/.config

  • 里面的目录/.config没有隐藏,因为他们没有必要。使用的整点~/.configDIR是未杂波用户$HOME。因为它们已经在一个单独的隐藏目录中,所以没有必要隐藏在那里。

  • 不遵循规范的软件(不幸的是仍然是绝大多数)对其设置(如~/.myapp)使用隐藏目录,以试图不弄乱用户的$HOME. 它(有点)有效,但当您尝试分别备份设置和“大数据”(如图片、视频、音乐)时,它仍然是一种糟糕的方法。将所有设置放在一个地方,而不与用户的数据混合,是一种更好的方法

  • 至于“无论XDG_CONFIG_HOME指向何处都具有常量名称”,他们已经这样做了:它appname 没有前导点。请记住:使用的$HOME/.appname是那些忽略XDG 规范的。他们使用硬编码路径。

  • 至于您的应用,请使用 XDG 标准!我求求你,你的用户会感谢你不要再把他们的主目录弄得乱七八糟。

  • 只想说你的答案是**最**的!传统智慧特别有用,您的观点得到了很好的解释:)谢谢! (5认同)

jas*_*yan 28

因为那些放置配置文件的应用程序$HOME忽略了XDG 基本目录规范,特别是:

有一个相对于应该写入用户特定配置文件的基本目录。该目录由环境变量 $XDG_CONFIG_HOME 定义...

如果 $XDG_CONFIG_HOME 未设置或为空,则应使用等于 $HOME/.config 的默认值。

  • 这个答案还远未完成。也就是说,这似乎意味着规范从第一天起就存在,而只是应用程序从一开始就忽略了它。但实际上有相当多的应用程序比 XDG 的规范存在更长时间。 (5认同)
  • @ceving:这不是真的,用户 HOME 树中的点文件也可以是日志(`.xsession-errors`)、状态/锁定文件(`.gksu.lock`)、缓存文件,甚至设备/块文件。其中许多你_不_想要备份。 (4认同)

Dav*_*ner 9

一个比较有争议的答案是:

  • ~/.config是 XDG 标准的默认值,它仅适用于遵守 FreeDesktop.org 标准的应用程序(也通过使用$XDG_CONFIG_HOME变量)。
  • ~/.appname 在自由桌面标准之前存在
  • 不是每个人都喜欢 freedesktop 标准
  • $HOME在我看来,“杂乱”不是问题。

  • - 从软件开发人员的角度来看,目录标准没有什么可喜欢或不喜欢的,它只是将您的保存目录常量从 `$HOME/.myapp` 更改为 `${XDG_CONFIG_HOME:-$HOME/.config}/myapp` (8认同)
  • 这不是一个有争议的答案,这是一个具有误导性和明显错误的答案: - 目前我在 `~/.config` 中有 120 个目录,来自与 FreeDesktop.org 无关的应用程序,例如 Libre Office、Chromium、Deluge,很多游戏(包括但不仅是**所有**使用 Unity3D 的游戏)、Google 应用程序(Chrome、Earth)、Python 内容(IPython、Eric)、模拟器(Muppen 64、Desmune)。FreeDesktop.org 本身的应用程序很少。- `~/.appname` 是在 XDG 之前存在的约定,但今天仍在使用的大多数软件都是在标准之后*创建的。 (2认同)
  • `~/.app` 比 `~/.config/app` 有什么好处吗? (2认同)