无法在 X 会话启动时导出环境变量

无法在 X 会话启动时导出环境变量

我的设置是:

  • Debian 测试(延伸),最新
  • 启用自动登录的 LightDM
  • 很棒的窗口管理器
  • bash,在 ROXTerm 或 XTerm 中

我似乎无法设置自己的环境变量并在 X 会话启动时获取它。这是我尝试过的:

  • 使用~/.bash_profile在我以前的操作系统上工作,但我从中学到了这个答案它不是源自 Debian 及其衍生版本中的 X 启动
  • mv .bash_profile .profile按照建议做了,但它也不起作用,因为,正如我后来了解到的那样这里,~/.profile当显示管理器启动 X 会话时不会获取
  • 上述问题的答案建议使用~/.xsessionrc.这也行不通,因为据我所知这里,它仅来源于/etc/X11/XsessionLightDM 不执行的地方
  • Arch Linux 维基索赔LightDM 源~/.xprofile文件,但这也不起作用。

尝试了最后一个网站的建议,我做了~/.xinitrc这样的事情:

export QT_STYLE_OVERRIDE=GTK+
[ -f ~/.xprofile ] && source ~/.xprofile
~/.screenlayout/default.sh
awesome

我的~/.xprofile像这样:

[[ -f ~/.bashrc ]] && . ~/.bashrc
source /etc/bash_completion.d/virtualenvwrapper

export GDK_NATIVE_WINDOWS=1
export WORKON_HOME=$HOME/env/

遗憾的是,登录并启动 X 会话后,我发现这些变量均未设置:

red@localhost:~$ echo $QT_STYLE_OVERRIDE

red@localhost:~$ echo $GDK_NATIVE_WINDOWS

red@localhost:~$ echo $WORKON_HOME

我该如何正确设置它们?

答案1

~/.xinitrc仅当您在文本模式下登录后使用startx(或以其他方式调用)启动 GUI 会话时才读取。xinit所以这对你没有帮助。

使用显示管理器登录时是否读取~/.bash_profile~/.profile~/.xprofile~/.xsessionrc取决于显示管理器的配置方式以及您在登录时选择的会话类型。据我所知,至少在 Debian jessie 上(我还没有查看是否从那时起,情况发生了变化):

  • /usr/share/lightdm/lightdm.conf.d/01_debian.conf告诉 Lightdm 用作/etc/X11/Xsession会话启动脚本。
  • /etc/X11/Xsession(通过/etc/X11/Xsession.d/40x11-common_xsessionrc)加载$USERXSESSIONRC,即~/.xsessionrc.

所以~/.xsessionrc应该可以工作,至少在 Debian jessie 上是这样。

在 Debian 上,~/.pam_environment应该能够为任何登录方法设置环境变量。

或者,您可以通过以下方式设置环境变量并从 Awesome 运行程序~/.config/awesome/rc.lua(调用posix.setenv("QT_STYLE_OVERRIDE", "GTK+")设置环境变量)。

相关内容