我正在阅读XDG 基本目录规范,但我在理解其确切$XDG_DATA_HOME
用途时遇到了一些困难。该规范提到了以下内容:
有一个相对应写入用户特定数据文件的基本目录。该目录由环境变量定义
$XDG_DATA_HOME
。
但我不确定如何解释用户特定的数据文件。这是否用于支持应用程序的只读数据数据,例如图形、声音文件、字体......?或者这是用户使用应用程序创建的数据?
我问这个是因为我有两个应用程序,我不知道它们的数据是否属于XDG_DATA_HOME
?
- 任务战士创建一个包含所有任务(及其元数据)的数据文件。这些数据文件不是静态的,它们会随着您添加/修改/删除任务而变化。但是,它们永远不会手动编辑,您始终使用该应用程序来添加/修改/删除任务。
- 我有一个生成 tarball 的备份脚本。这些 tarball 显然是远程存储的,但我也想将它们存储在本地,以便在某些情况下快速访问。
在我看来,其目的
XDG_DATA_HOME
是存储应用程序代表特定用户创建的数据,但以用户不直接关心的形式存储。也就是说,用户不希望单独关心或希望将其复制到另一个系统(或发送给另一个用户)的文件。这些文件只能通过某种应用程序访问,例如您的 Task Warrior 数据文件。但请注意,如果给定用户在其主目录中安装了应用程序
/usr/share
,则该规范似乎确实允许类似于 的使用,即本质上不特定于给定用户的应用程序数据文件。在这种情况下,二进制文件将进入~/.local/bin
,相关数据将进入XDG_DATA_HOME
。存储配置的数据应该进入
XDG_CONFIG_HOME
。另一种思考方式是,如果用户备份和恢复XDG_DATA_HOME
,他们应该取回所有数据,但不能取回设置;如果他们备份和恢复XDG_CONFIG_HOME
,他们应该恢复他们的设置。可以重新创建的数据应该放入
XDG_CACHE_HOME
,我想说你的 tarball 适合在那里。(关于是否
$XDG
设置环境变量的考虑,通常与桌面环境相关,并不是那么相关,因为规范给出了在没有环境变量的情况下使用的默认值。)