![为什么有些应用程序使用 ~/.config/appname 作为其配置数据,而其他应用程序则使用 ~/.appname?](https://linux22.com/image/18964/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%9C%89%E4%BA%9B%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E4%BD%BF%E7%94%A8%20~%2F.config%2Fappname%20%E4%BD%9C%E4%B8%BA%E5%85%B6%E9%85%8D%E7%BD%AE%E6%95%B0%E6%8D%AE%EF%BC%8C%E8%80%8C%E5%85%B6%E4%BB%96%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%88%99%E4%BD%BF%E7%94%A8%20~%2F.appname%EF%BC%9F.png)
我注意到有些应用程序将其配置文件放入,~/.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
不是问题。