$HOME/.local/share是$XDG_DATA_HOME的默认值吗?


一样。似乎没有设置。 - Gunnar Hjalmarsson
2个回答

根据XDG基本目录规范环境变量默认未设置的错误报告,Ubuntu没有设置XDG变量。
根据FreeDesktop基本目录规范

$XDG_DATA_HOME定义了用户特定数据文件应存储的基本目录。如果$XDG_DATA_HOME未设置或为空,则应使用默认值$HOME/.local/share。

实现此规范的应用程序必须实现此行为,因此如果未定义$XDG_DATA_HOME,它们必须将$HOME/.local/share作为默认值。

有一些实现这个规范的例子,比如:Gliblibghc-xdg-basedir-profpyxdg

如果您想要覆盖这个值,您应该在/etc/profile或更好地在/etc/profile.d中定义XDG变量,如XDG_CONFIG_HOME变量应该在哪里定义?所述。


如果它未设置,您可以在您的~/.profile中这样设置它:
export XDG_DATA_HOME=${XDG_DATA_HOME:="$HOME/.local/share"}

这会保留已经设置的任何值,否则将其设置为在XDG Base Directory Specification中指定的默认值。

最好在你的~/.xprofile中定义这个,或者像接受的答案建议的那样,在/etc/profile中定义。如果你的默认shell是zsh,你也可以使用你的~/.zshenv文件,因为所有的东西都会读取该文件。 - smac89
是的,我同意它在很大程度上取决于我们关心的Linux发行版。对于Arch来说,选择显然是位于$HOME下的.xprofile文件... - Kris Stern
更好的是,对于{ba,z}sh和控制台登录,也可以使用~/.profile。回答已更新。 - Tom Hale