这似乎是每个应用程序开发人员都会遇到的一个简单问题,但我找不到答案。
根据最新的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}
为每个变量使用适当的默认值。