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

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

我注意到有些应用程序将其配置文件放入,~/.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 值)?

答案1

对 jasonwryan 的精彩答案的补充,解决了您的一些问题:

  • 你的$XDG_CONFIG_HOME不是设置~/。它根本就没有设置。所以应用遵循 XDG 规范使用默认值~/.config

  • 里面的目录/.config没有隐藏,因为它们没有必要。使用 dir 的全部目的~/.config整洁用户的$HOME.由于它们已经位于单独的隐藏目录中,因此无需隐藏在其中。

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

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

  • 至于你的应用程序,请使用XDG标准!我求你了,你的用户会感谢你不再让他们的主目录变得混乱。

答案2

因为那些放置配置文件的应用程序$HOME会忽略XDG 基目录规范, 尤其:

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

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

答案3

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

  • ~/.config是 XDG 标准的默认值,仅适用于遵守 FreeDesktop.org 标准的应用程序(也通过使用该$XDG_CONFIG_HOME变量)。
  • ~/.appname在 freedesktop 标准出现之前就已存在
  • 并非所有人都喜欢 freedesktop 标准
  • 在我看来, “混乱”$HOME不是问题。

相关内容