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