如何在 Linux 上设置图形登录的环境变量?

如何在 Linux 上设置图形登录的环境变量?

我正在寻找一种方法来为 Linux 上的图形登录设置任意环境变量。我不是在谈论启动终端并在终端内导出环境变量,因为这些变量仅存在于该终端内。我想知道如何设置一个将应用于我的图形会话中启动的所有程序的环境变量。

换句话说,Xorg 的对应内容是什么~/.bash_login

答案1

您随时可以将它们放入.profile,因此它们应该适用于任何登录。

但是,如果.bash_login存在,就会出现问题:在这种情况下,bash 将不会读取.profile

如果您希望变量既.profile适用于 bash,也适用于其他登录,请不要使用.bash_login!,而应将特定于 bash 的变量放入 中.bashrc

或者,包括.profile来自.bash_login

答案2

.profile做的不仅仅是设置环境变量,所以我把环境设置任务拆分成一个.setenv文件,仅有的设置环境。为了让它在 Debian 上设置 X11 的环境,我.xsessionrc在我的主页中添加了一个:

. ~/.setenv

.xsessionrc导致来源的文件是/etc/X11/Xsession.d/40x11-common_xsessionrc

使用 bash 用来设置其环境的文件并没有达到我想要的效果。当然,如果我在 X11 中启动 bash shell,我就会得到我想要的环境。但是,我需要设置 PATH,以便我的桌面环境可以运行我想要的软件。例如,我经常使用自定义版本的 Firefox,安装在常用路径之外。我希望我的桌面环境启动正确的版本,而不是使用它在默认路径上找到的任何版本。为此,必须在桌面环境启动之前设置 PATH。

答案3

Xorg 本身没有启动器,因为它不会启动您的程序 - 它会是您使用的任何显示管理器(gdm、xdm、xinit、startx 等)或会话管理器(gnome-session、KDE ​​等),因为它们是桌面会话进程的父进程。不幸的是,这些进程种类繁多,每个进程都有不同的启动脚本/点文件,因此没有一刀切的答案。(在 X 的客户端/服务器模型下,X 服务器甚至可能与客户端不在同一台机器上,并且它通常以 root 身份而不是您身份运行,因此不适合设置环境变量。)

相关内容