是否有关于〜/ .config和〜/ .cache之类目录的官方文档?


13

我看到这些目录已被许多应用程序使用,现在正在考虑将其用于我的应用程序。我怎么知道这是一个官方支持的文件夹,而不仅仅是每个用户缓存/配置的月份位置?

我一直在谷歌搜索并从Ubuntu寻找官方的东西,但无济于事,也许其他人知道此文档的正确搜索条件或位置。这是我应该接受的未注明标准练习场所吗?


“也许其他人知道正确的搜索词”:我不确定使用它们的正式文档,但这些文件被认为是点文件,在这些示例中更具体地讲是点文件夹。它们默认情况下是隐藏的,通常用于保存用户首选项(〜/ .config)和其他“支持”文件,例如缓存(〜/ .cache)。
Nmath

2
“来自Ubuntu的官方”错误的地方。它是由freedesktop组织定义的,因此取决于-desktop。不只是Ubuntu。哦,这些是准则。
Rinzwind

1
@SergiyKolodyazhnyy,讨论点文件的历史很有趣,但实际上,文件管理器和bash命令默认隐藏点文件/点文件夹(不可见)dir。这样,是的,它们绝对是“隐藏的”。以这种方式隐藏文件有一个很好的目的,可以防止最终用户意外地更改/删除它们-这就是为什么仍然如此普遍地使用它们。我同意,在并非不可能找到/读取/更改它们的意义上,不应将dotfile用于安全性。
Nmath

3
@SergiyKolodyazhnyy很少有几种方法可以单独100%有效。就声称点文件“绝不隐藏”而言,显然是错误的,因为这是使用它们的主要原因,也是添加前述文件的唯一好处.。他们完全看不见吗?不,他们不应该。他们还能读/写吗?是的,他们应该。在大多数情况下,它们是否不可见(隐藏)?是的-这就是重点
Nmath

1
@Nmath好吧,让我们只同意不同意:)此外,注释部分不适合进行广泛的讨论。
Sergiy Kolodyazhnyy

Answers:


19

是的,有一个标准:这些由freedesktop.org指定,并且是 XDG基本目录规范的一部分

配置规范仅概述了基本要求,但是详细信息在“基本目录规范”中。该~/.config~/.cache目录是缺省的,除非另有配置:

有一组相对于应该搜索配置文件的优先顺序基本目录。这组目录由环境变量$ XDG_CONFIG_DIRS定义。

有一个基本目录,应将相对于该基本目录写入用户特定的非必需(缓存)数据。该目录由环境变量$ XDG_CACHE_HOME定义。

...

$ XDG_CONFIG_HOME定义了应将用户特定配置文件相对于其存储的基本目录。如果$ XDG_CONFIG_HOME未设置或为空,则应使用等于$ HOME / .config的默认值。

...

$ XDG_CACHE_HOME定义了基本目录,相对于该基本目录应存储用户特定的非必需数据文件。如果$ XDG_CACHE_HOME未设置或为空,则应使用等于$ HOME / .cache的默认值。

您可能会注意到这些规范主要说明了数据的存储位置,使用的环境变量以及以何种方式(与桌面无关,高效等),但是大多数桌面都可以自由地实现数据的“如何”部分。基于GNOME的桌面将gsettings在KDE用户可以通过via使用相同位置的地方使用kwriteconfig,但是它们都将依赖于~/.config目录


问题要点

我怎么知道这是一个官方支持的文件夹,而不仅仅是每个用户缓存/配置的月份位置?

这些目录出现在官方文档中,文件系统层次结构标准也提到了这些目录。这是官方文档,因此文件夹得到正式支持。

这是我应该接受的未注明标准练习场所吗?

取决于您正在创建的应用程序。该应用程序是否应该基于每个用户进行配置,或者在整个系统中始终如一地工作?FHS告诉我们,对于系统范围的内容,应使用/etc/usr/local,但是XDG目录应用于用户特定的配置- ~/.cache~/.config。当然,如果应用程序不依赖于用户特定的设置,则可以使用/ var / cache代替每个用户的目录。当然,您始终可以使用单个~/.appname.conf文件,~/.appname.db 或者~/.appname/目录来保存配置并在那里缓存,但这是非标准的。不是“不好”-只是非标准。

也可以看看


你把这个贴在我面前吗?或期间?> :)
Rinzwind


麻烦

太棒了,感谢您提供的信息,我应该更深入地研究。
丹尼A

POSIX的哪一部分讨论目录用法?
chepner
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.