我发现许多应用程序都在使用这些目录,现在我正考虑将它们用于我的应用程序。我如何知道这是一个官方支持的文件夹,而不仅仅是每个用户缓存/配置的临时位置?
我一直在搜索 Ubuntu 的官方信息,但无济于事;也许其他人知道正确的搜索词或此文档的位置。我是否应该接受这个未说明的标准实践位置?
答案1
是的,有一个标准:这些是由 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 用户可以通过以下方式使用相同的内容kwriteconfig
,但它们都将依赖于~/.config
该过程中的目录
问题要点
我如何知道这是一个官方支持的文件夹,而不仅仅是每个用户缓存/配置的每月位置?
这些目录出现在官方文档中,文件系统层次标准也提到了它们。这是官方文档,因此这些文件夹受到官方支持。
我是否应该接受这个未说明的标准实践地点?
取决于你正在创建的应用程序。应用程序是否应该根据每个用户进行配置,还是在整个系统中一致地工作?FHS 告诉我们,对于系统范围内的东西,我们应该使用/etc
或/usr/local
,但 XDG 目录应该用于用户特定的配置 -~/.cache
和~/.config
。当然,如果应用程序不依赖于用户特定的设置,/var/缓存可以用来代替每个用户的目录。当然,你总是可以使用单个~/.appname.conf
文件、目录~/.appname.db
或~/.appname/
目录来保存配置和缓存,但这是非标准的;不是“坏”——只是非标准。