进一步阅读

进一步阅读

就我个人而言,我希望遵守 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命令的操作,但会失败并显示错误消息。

或者可以说,在这种情况下,只有系统范围的目录被读取并处理程序的相关文件。

不要默认为写信给不过,系统目录。之间存在差异每个用户东西和全系统东西。

进一步阅读

相关内容