就我个人而言,我希望遵守 XDG 基本目录规范,以使我的实用程序更加可移植。
然而,这样做时,需要我为未实现 XDG_ 参数的系统重新实现。
这本身并不是什么大问题,因为 XDG 基本目录规范详细介绍了要做什么。例如,如果XDG_DATA_HOME
未设置或为空,~/.local/share
则使用。
$HOME
但是如果未设置或为空怎么办?
我是否应该至少在给定的 XDGBDS 中遵守系统范围的选项(例如没有 $HOME 但更多 /etc/某物ETC。)?
老实说,我对什么情况下实际上是空的的经验很少$HOME
,所以我在这里很难做出很好的决定。
答案1
环境HOME
变量由所有形式的用户登录(交互式和非交互式)设置。单一 Unix 规范。它也经常被设置为每用户服务,尽管不锈钢不需要这样做,因为此类服务在登录会话之外执行,并且不锈钢仅规定用户登录的要求。几乎总是如此不是为系统范围的服务流程设置。
这XDG 基础目录规范HOME
当环境变量不存在时,对要做什么保持沉默。因此,实际上要做什么在某种程度上是一个意见问题,以及什么对特定工具有意义的问题。
一可以执行一些软件在没有HOME
环境变量时执行的操作,并回退到在系统帐户数据库中查找当前进程的有效 UID 记录中的主目录字段。 (我的 nosh 工具集中的一些工具就是这样做的,包括那些试图在 中查找内容的工具$HOME/.config/
;进一步阅读中指出的答案中的程序也是如此。)
但同样,我们可以执行该cd
命令的操作,但会失败并显示错误消息。
或者可以说,在这种情况下,只有系统范围的目录被读取并处理程序的相关文件。
不要默认为写信给不过,系统目录。之间存在差异每个用户东西和全系统东西。
进一步阅读
- 沃尔多·巴斯蒂安、瑞安·洛蒂和伦纳特·珀特林 (2010)。 XDG 基础目录规范。 Freedesktop.org。
- https://unix.stackexchange.com/a/203959/5132
- https://unix.stackexchange.com/a/326606/5132
- https://unix.stackexchange.com/a/313001/5132
- 乔纳森·德博因·波拉德 (2019)。 “环境变量”。每用户的用户服务。小吃指南。
- 乔纳森·德博因·波拉德 (2019)。 “用户目录”。地名词典。小吃指南。