Bash

無法在 X 會話啟動時導出環境變數

  • April 16, 2016

我的設置是:

  • Debian 測試(延伸),最新
  • 啟用自動登錄的 LightDM
  • 很棒的視窗管理器
  • bash,在 ROXTerm 或 XTerm 中

我似乎無法設置自己的環境變數並在 X 會話啟動時獲取它。這是我嘗試過的:

  • using~/.bash_profile在我以前的作業系統上工作,但我從這個答案中了解到,它不是來自 Debian 的 X 啟動及其衍生產品
  • mv .bash_profile .profile按照建議做了,但它也沒有用,因為正如我後來從這裡了解到的那樣,~/.profile當顯示管理器啟動 X 會話時沒有來源
  • 上述問題的答案建議使用~/.xsessionrc. 這也不起作用,因為正如我從這裡了解到的那樣,它僅來自/etc/X11/XsessionLightDM 不執行的來源
  • Arch Linux wiki聲稱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

如何正確設置它們?

~/.xinitrc只有在以文本模式登錄後使用startx(或以其他方式呼叫)啟動 GUI 會話時才會讀取。xinit所以這對你沒有幫助。

使用顯示管理器登錄時是否讀取~/.bash_profile、和取決於顯示管理器的配置方式以及登錄時選擇的會話類型。據我所知,至少在 Debian jessie 上(我沒有看過從那時起,情況發生了變化):~/.profile``~/.xprofile``~/.xsessionrc

  • /usr/share/lightdm/lightdm.conf.d/01_debian.conf告訴 Lightdm/etc/X11/Xsession用作會話啟動腳本。
  • /etc/X11/Xsession(via /etc/X11/Xsession.d/40x11-common_xsessionrc) 負載$USERXSESSIONRC~/.xsessionrc.

所以~/.xsessionrc應該可以工作,至少在 Debian jessie 上是這樣。

在 Debian 上,~/.pam_environment應該可以為任何登錄方法設置環境變數。

~/.config/awesome/rc.lua或者,您可以通過(呼叫設置環境變數)設置環境變數並從 Awesome 執行程序posix.setenv("QT_STYLE_OVERRIDE", "GTK+")

引用自:https://unix.stackexchange.com/questions/276898