如何在 Bash 脚本中找到 $XDG_CONFIG_HOME、$XDG_CONFIG_HOME、$XDG_STATE_HOME 等的值?

如何在 Bash 脚本中找到 $XDG_CONFIG_HOME、$XDG_CONFIG_HOME、$XDG_STATE_HOME 等的值?

这似乎是每个应用程序开发人员都会遇到的一个简单问题,但我找不到答案。

根据最新的XDG 基于规格,有很多目录需要在环境变量中定义。举一个例子:

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

假设我的 Bash 脚本保存了用户配置 - 我想遵循 XDG 规范 - 我如何找到$XDG_CONFIG_HOME?你会做类似的事情是有道理的

#!/bin/bash

# Print out $XDG_CONFIG_HOME
echo Your XDG_CONFIG_HOME is: [$XDG_CONFIG_HOME]

但是在新安装的 Ubuntu 和 Fedora Silverblue 上运行它都会给出输出:

$ ./test.sh
Your XDG_CONFIG_HOME is: []

这似乎完全没用,因为这意味着在新安装的 Ubuntu 和 Fedora Silverblue 桌面上,我的应用程序会将配置文件写入运行目录。然而,我可以看到很多应用程序正确地将数据放入~/.config/.这些应用程序在哪里找到 XDG 环境变量,我怎样才能找到它们?

答案1

规格解释如何处理缺失值

如果未设置或为空,则应使用$XDG_DATA_HOME等于 /.local/share 的默认值。$HOME

对于所有 XDG 变量依此类推。

因此,桌面环境通常仅在执行时才设置值不是匹配默认值。在脚本中,使用扩展,例如${XDG_CONFIG_HOME:-$HOME/.config}为每个变量使用适当的默认值。

相关内容