Linux中的XDG基准目录规范
介绍
各种规范指定文件和文件格式。此规范通过定义相对于哪些文件应该位于的一个或多个基本目录来定义应该查找这些文件的位置。
基本
XDG基本目录规范基于以下概念:
- 有一个用于写入特定用户数据文件的基本目录。$XDG_DATA_HOME。
- 有一个用于写入特定用户的配置文件基本目录。$XDG_CONFIG_HOME。
- 有一组首选的基本数据目录。$XDG_DATA_DIRS。
- 有一组首选的基本配置目录。$XDG_CONFIG_DIRS。
- 有一个用于写入用户特定的非必要(缓存)数据的基本目录。$XDG_CACHE_HOME。
- 有一个用户放置特定于用户的运行时文件和其他文件对象。$XDG_RUNTIME_DIR。
环境变量
XDG环境变量 | 默认值 |
---|---|
$XDG_DATA_HOME | $HOME/.local/share |
$XDG_CONFIG_HOME | $HOME/.config |
$XDG_DATA_DIRS | /usr/local/share/:/usr/share/ |
$XDG_CONFIG_DIRS | /etc/xdg |
$XDG_CACHE_HOME | $HOME/.cache |
$XDG_RUNTIME_DIR
是用户特定的不重要的运行时文件和其他文件对象(例如套接字,命名管道…)存储的基本目录。该目录必须由用户拥有,并且他必须是唯一具有读写访问权限的目录。它的Unix访问模式必须是0700。
目录的生命周期必须绑定到登录用户。必须在用户首次登录时创建,如果用户完全注销,则必须删除该目录。如果用户多次登录,他应该指向同一目录,并且必须从第一次登录到他在系统上的最后一次登出时继续存在,而不是在两者之间删除。目录中的文件必须不能在重新启动或完全注销/登录循环后继续存在。
该目录必须位于本地文件系统上,不与任何其他系统共享。该目录必须完全按照操作系统的标准进行。更具体地说,在类Unix操作系统上,AF_UNIX套接字,符号链接,硬链接,适当的权限,文件锁定,稀疏文件,内存映射,文件更改通知,必须支持可靠的硬链接计数,并且对文件名没有限制应该强加字符集。此目录中的文件可能需要定期清理。为确保不删除您的文件,他们应至少每6小时单调时间修改一次访问时间戳记,或者在文件上设置“粘滞”位。
如果$XDG_RUNTIME_DIR未设置,应用程序应回退到具有类似功能的替换目录并打印警告消息。应用程序应使用此目录进行通信和同步,并且不应在其中放置较大的文件,因为它可能驻留在运行时内存中,并且不一定可以交换到磁盘。
参考规范
文件 | 参考规范:subdir应该为软件名 |
---|---|
数据文件 | $datadir/subdir/filename |
配置文件 | $confdir/subdir/filename |
$config默认为~/.config : /etc
如果在尝试编写文件时,目标目录不存在,则应尝试使用权限创建目标目录0700。如果目标目录已存在,则不应更改权限。应用程序应准备好处理无法写入文件的情况,因为该目录不存在且无法创建,或者出于任何其他原因。在这种情况下,它可以选择向用户呈现错误消息。