为什么某些应用程序将〜/ .config / appname用于其配置数据,而另一些应用程序则使用〜/ .appname?


37

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

Answers:


44

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

  • $XDG_CONFIG_HOME不是设置~/。根本没有设置。因此,应用下面的XDG规范使用默认~/.config

  • 内部的dirs /.config没有隐藏,因为它们不必这样做。使用~/.config目录的全部目的是使用户的目录变得整洁$HOME。由于它们已经在单独的隐藏目录中,因此无需将其隐藏在其中。

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

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

  • 对于您的应用程序,请使用XDG标准!求求你,您的用户将对您表示感谢,不要再让他们的$ HOME混乱了。


4
只想说,你的答案是优秀的!传统知识特别有用,您的观点也得到了很好的解释:)谢谢!
史蒂夫·本纳

HOME目录中的隐藏文件列表和隐藏配置目录中的非隐藏文件列表之间的区别在哪里?对我来说,它是如此之广。

@ceving:我看到两个主要区别,一个外观上和一个实际上的区别:从您的$HOME角度来看,它是一个~/.config条目,而不是几个,也许是几十个。而且,备份设置(或排除设置)更加容易!您如何区分您~/Documents或您的软件设置~/.cache
MestreLion

24

由于那些放置配置文件的应用程序$HOME都忽略了XDG基本目录规范,因此:

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

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

看来我的(默认$XDG_CONFIG_HOME为XUbuntu 11.10)设置为~/,但仍有许多应用程序在使用~/.config/
Ivan

3
这个答案远未完成。即,似乎暗示该规范自第一天起就存在,而只是应用程序从一开始就忽略了它。但是实际上,有相当多的应用比XDG的规范存在了更长的时间。
Ruslan

0.7版Poettering标准。那一定很重要。谁能解释标准解决的问题?

@Ruslan:自2003 以来一直在那里。那是15年前!没错,那不是第一天,在此之前已经创建了许多软件。但是任何此类软件极有可能在今天仍在使用许多更新,因此可以肯定地说那些未迁移到XDG标准的软件故意选择忽略它。
MestreLion

@ceving:它以与组织方式相同的方式解决了组织用户目录的问题/:不将数据与具有配置的可执行文件混在一起。~/.config是的用户副本,例如/etc,这在备份中有很大帮助。如果不使用/.config,则任何设置备份都必须手动包含所有应用程序目录或手动排除所有用户的“大数据”目录(视频,音乐以及他可能创建的任何其他个人目录)。
MestreLion

7

更有争议的答案是:

  • ~/.config是XDG标准的默认设置,它仅适用于遵循FreeDesktop.org标准的应用程序(也通过使用$XDG_CONFIG_HOME变量)。
  • ~/.appname 在freedesktop标准之前存在
  • 并非所有人都喜欢freedesktop标准
  • $HOME我认为“杂乱” 不是问题。

2
这不是一个有争议的答案,它是一个令人误解和错误的答案:-目前,我在拥有120个目录~/.config,这些目录来自与FreeDesktop.org没有任何关系的应用程序,例如Libre Office,Chromium,Deluge,很多游戏(包括但不包括)仅使用Unity3D的所有游戏),Google应用(Chrome,Earth),Python素材(IPython,Eric),模拟器(Muppen 64,Desmune)。FreeDesktop.org本身只有很少的应用程序。- ~/.appname是XDG之前存在的约定,但是今天仍在使用的大多数软件是在标准之后创建的。
MestreLion

5
-从软件开发人员的角度来看,目录标准中没有什么不喜欢或不喜欢的东西,它只是将您的保存目录常数从更改$HOME/.myapp${XDG_CONFIG_HOME:-$HOME/.config}/myapp
MestreLion

仍然是freedesktop标准,在此处定义:specifications.freedesktop.org/basedir-spec/…以及哪些应用程序可以免费使用,而不希望使用它们。并非所有人都认为将.config分开是必要的。
David Gardner '18

的确如此,但是这意味着遵循该标准的应用程序在某种程度上具有“ FreeDesktop.org应用程序”的误导性。
MestreLion

2
有没有任何好处~/.app~/.config/app
sam boosalis,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.