XDG_DATA_HOME 中存储什么?

XDG_DATA_HOME 中存储什么?

我正在阅读XDG 基目录规范,但我无法理解它的确切用途$XDG_DATA_HOME。该规范提到了以下内容:

有一个相对应写入用户特定数据文件的基本目录。该目录由环境变量定义$XDG_DATA_HOME

但我不知道如何解释用户特定的数据文件。这是否用于支持应用程序的只读数据数据,例如图形、声音文件、字体......?或者这是用户使用应用程序创建的数据?

我问这个是因为我有两个应用程序,我不知道它们的数据是否属于XDG_DATA_HOME

  • 任务战士创建一个包含所有任务(及其元数据)的数据文件。这些数据文件不是静态的,它们会随着您添加/修改/删除任务而变化。但是,它们永远不会手动编辑,您始终使用该应用程序来添加/修改/删除任务。
  • 我有一个生成 tarball 的备份脚本。这些 tarball 显然是远程存储的,但我也想将它们存储在本地,以便在某些情况下快速访问。

答案1

在我看来,其目的XDG_DATA_HOME是存储应用程序创建的数据代表特定用户的,但以用户不直接关心的形式。也就是说,用户不希望单独关心或希望将其复制到另一个系统(或发送给另一个用户)的文件。这些文件只能通过某种应用程序访问,例如您的 Task Warrior 数据文件。

但请注意,该规范似乎确实允许使用类似于/usr/shareIE如果给定用户在其主目录中安装应用程序,则本质上不特定于给定用户的应用程序数据文件。在这种情况下,二进制文件将进入~/.local/bin,相关数据将进入XDG_DATA_HOME

存储配置的数据应该进入XDG_CONFIG_HOME。另一种思考方式是,如果用户备份和恢复XDG_DATA_HOME,他们应该取回所有数据,但不能取回设置;如果他们备份和恢复XDG_CONFIG_HOME,他们应该恢复他们的设置。

数据可以是重新创造应该进去XDG_CACHE_HOME,我想说你的 tarball 适合在那里。

(关于是否设置环境变量的考虑$XDG,通常与桌面环境相关,并不是那么相关,因为规范给出了在没有环境变量的情况下使用的默认值。)

相关内容