警告!此规范内容是不稳定版本,可能会发生破坏兼容性的更新。当无法保障向下兼容时,将会升级此文档的主版本号,如从“1.0”更新到“2.0”。反之,普通更新只会升级次版本号,如“1.0”更新到“1.1”,其对“1.0”版本向下兼容。请在使用前确认此文档的版本号,并为将来可能发生的兼容性变化做好准备。
系统目录规范
- 维护者:zccrs zhangjide@uniontech.com
- 版本:1.0
- 修改日期:2021.3.17
- 议题:#21
引言
此文档能帮助系统规范化文件的存储路径,与 Debian 的目录结构不同的是,本规范偏向于定义与桌面环境相关的标准,主要服务于此项目的其它规范文档。
此规范中定义的目录不需要程序自己创建,皆由系统提供,程序中可直接使用。
目录
- 兼容 XDG 规范的目录,以环境变量定义
变量名称 | 介绍 |
---|---|
$XDG_DATA_HOME | 针对当前用户的程序数据存储目录,通常不同的用户会对应不同的目录。当此环境变量为空时,则默认为 “$HOME/.local/share/” 目录 |
$XDG_CONFIG_HOME | 针对当前用户的程序配置文件存储目录,通常不同的用户会对应不同的目录。当此环境变量为空时,则默认为 “$HOME/.config” 目录 |
$XDG_CACHE_HOME | 针对当前用户的程序缓存文件(如程序日志)存储目录,通常不同的用户会对应不同的目录,需要注意的是,当存储空间不足时,操作系统可能会自动删除此目录。当此环境变量为空时,则默认为 “$HOME/.cache” |
$XDG_RUNTIME_DIR | 针对当前用户的运行时文件存储目录,不同的用户对应到不同的目录,通常用于存储程序运行时产生的文件(如 socket 、 pipe 类型的文件),这个目录的所有者必须是此用户,并且它必须只允许此用户读写此目录,通常这个目录的权限为:0700。此目录必须在用户第一次登录之前创建,并且在用户最后一个会话注销之后删除,如果用户登录了多次,则应该指定同一个目录。在用户处于登录状态期间,必须保证此目录一直存在,在此期间不可删除(就算删除之后立即重新创建也认为它已经被删除),在用户未登录或已经全部注销(包含系统关机/重启)时必须要确保此目录被删除。当此环境变量为空时,应用程序应当使用一个有同样功能的目录代替它,并且输出一个警告信息明确通知使用者。写入此目录的数据不保证持久化存储,数据很可能会一直保存在内存,因此程序应当避免在此目录中存储大量数据,且不要假设操作系统的任何行为 |
另外,此规范兼容 xdg-user-dirs
- DSG 规定的目录,以环境变量定义
变量名称 | 简介 |
---|---|
$DSG_APP_DATA | 参见:应用数据目录规范,此目录存在权限管控,仅允许通过验证的程序对其进行读写 |
$DSG_DATA_DIR | 数据安装目录,此目录下的数据只能由安装包携带,禁止应用程序在运行时进行修改。在其它规范文档中,通常会以此目录为基础,派生其标准目录,如 配置文件规范 中将 “$DSG_DATA_DIR/configs/” 定义为配置描述文件的安装路径之一。当此环境变量为空时,则默认为 “/usr/share/dsg/” 目录 |
- 固定用途的绝对路径
路径 | 简介 |
---|---|
/etc | 此目录由用户编辑,用于用户自定义程序配置或其它数据,不可直接往此目录内安装文件,且程序在运行时只可从此目录读取数据,不可修改目录内的文件 |