[ 已解决 ] 关于 xdg_data_dirs 变量的问题

我是用 livecd 安装的,装完后运行 echo $XDG_DATA_DIRS,结果如下:
/usr/share:/usr/share
不是应该是 /usr/local/share:/usr/share 吗?这是 xdg 标准 standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
请问这个变量默认情况是在那个文件设置的?

如果是想修改的话,可以直接(暂时的):
XDG_DATA_DIRS=/usr/local/share:/usr/share

环境变量可在 /etc/profile(对所有用户有用)和.bashrc(对当前用户有用)中更改

1赞

谢谢!但是系统默认不就是应该就是 /usr/local/share:/usr/share 的吗?这是 openSUSE 的特别设置吗?还是 bug?

理论上上面这样改是可以的,但是貌似没有必要。刚才不知道 XDG_DATA_DIRS 这个变量是干什么的。google 以后发现原来是和桌面项文件有关。

我的理解是系统会在这个变量表示的目录下的 applications 目录里寻找 desktop 文件。

之前
echo $XDG_DATA_DIRS
发现出来的是
/usr/share:/usr/share

和楼主一样。
于是我去 /usr/share/applications 目录下找,发现果然很多 desktop 文件,而且还有几个子目录,里面也是 desktop 文件。

然而 /usr/local/share 目录是空的,所以即使变量里有 /usr/local/share 也没什么用。于是我奇思妙想了一下,把 /usr/share/applications 目录 cp 到了 /usr/local/share 目录下,然后重启计算机,然后再
echo $XDG_DATA_DIRS

奇特的发现输出居然变成了
/usr/share:/usr/local/share:/usr/share

看来这个变量应该不用设置,我估计它是每次开机时检查目录后自动生成的,但是为什么 /usr/share 会出现两次我就不知道了,但是这些都不影响使用。网上有更改这个变量来解决一些问题的,但是说实话看不太懂。但是感觉是 bug 的可能性不大。

PS:楼上有一个打字错误,是 XDG 不是 SDG,希望改正。

其实呢,这个变量是自己编译软件并安装到 /usr/local 时用的,比如说编译的软件安装了一个 desktop 文件到 /usr/local/share/applications,如果 $XDG_DATA_DIRS 不包含 /usr/local/share,运行 kbuildsycoca4 后在 kde 菜单里是找不到你刚刚编译安装的软件的,而且 /usr/share 也不应该重复两次吧。

已改