ein*_*lum 6 directory-structure xdg-open xdg
我在 下安装了一些应用程序/opt/myapp
,它有一个/opt/myapp/share
目录。当我完成安装时,它告诉我:
Note that '/opt/myapp/share' is not in the search path
set by the XDG_DATA_HOME and XDG_DATA_DIRS
environment variables, so applications may not
be able to find it until you set them. The
directories currently searched are:
- /usr/share/gnome
- /home/joeuser/.local/share/flatpak/exports/share
- /var/lib/flatpak/exports/share
- /usr/local/share
- /usr/share
Run Code Online (Sandbox Code Playgroud)
将目录添加到该列表的正确方法是什么 - 系统范围内和作为单个用户?
在德国ubuntuusers维基有一个很好的列表,可用于这一目的的文件和目录。
根据我的研究,全局附加到该环境变量并非易事,但这里有一些提示:
/etc/environment
是最简单的方法/etc/profile
也可能是一个好方法,因为它是由 shell 执行的/etc/X11/Xsession.d/*
和/etc/security/pam_env.conf
$HOME/.profile
(或$HOME/.zprofile
对于 zsh 用户)在多个地方被建议,但是XDG_DATA_DIRS="$HOME/.local/xdg:$XDG_DATA_DIRS"
在那里添加行使我的桌面在登录时完全无法使用$HOME/.xsessionrc
并将线export XDG_DATA_DIRS="$HOME/.local/xdg:$XDG_DATA_DIRS"
放在那里。当然,您必须替换$HOME/.local/xdg
为您要添加的目录。另请注意,这只会为图形应用程序设置变量,而不是为外壳程序设置变量(因此不会在 中提及您的值echo $XDG_DATA_DIRS
),但这应该不是问题。只需执行此行并再次登录,它应该可以工作:
echo export 'XDG_DATA_DIRS="/opt/myapp/share:$XDG_DATA_DIRS"' >> ~/.xsessionrc
Run Code Online (Sandbox Code Playgroud)
如果此后无论出于何种原因您的系统无法正常运行,请进入Recovery Mode,进入 root shell 并键入rm /home/<username>/.xsessionrc
然后reboot
返回到您的系统。
小智 3
我不确定系统范围内的情况。但作为单个用户(可以在系统范围内访问),我将这一行包含在我的~/.profile
文件中。
XDG_DATA_DIRS="/var/lib/flatpak/exports/share:$XDG_DATA_DIRS"
您可以对其进行调整以满足您自己的需求。