如何为 GNOME 会话设置环境变量?

Ber*_*ard 16 linux unix gnome environment-variables

在我的系统上,对于使用 SDL 的应用程序,我需要设置一个环境变量:

export SDL_AUDIODRIVER=alsa
Run Code Online (Sandbox Code Playgroud)

使声音正常工作。如何设置我的 GNOME 会话,以便所有应用程序都存在此变量(因此,如果我通过 Nautilus 运行应用程序,或使用DBGL,应用程序可以正常工作)?

编辑:

我设置的配置文件(并在每个配置文件之后重置我的机器)无济于事:

  • .xsession
  • .xsessionrc
  • .gnomerc
  • .bash_profile
  • .profile<-- 这适用于一般情况,但不适用于您的发行版在其他地方设置变量时。
  • /etc/profile

Den*_*aia 8

https://help.ubuntu.com/community/EnvironmentVariables讲了四个我们可以设置环境变量的地方:

  • ~/.pam_environment- […] 它不是一个脚本文件,而是由赋值表达式组成,每行一个。[...] 需要重新登录才能初始化变量。[…]
  • ~/.profile - 这可能是放置环境变量分配的最佳文件,因为它在启动过程桌面会话期间由 DisplayManager 自动执行,并且在从文本控制台登录时由登录 shell 自动执行。
  • ~/.bash_profile或者~/.bash_login- 如果这些文件之一存在,当它作为登录 shell 启动时,bash 会执行它而不是“~/.profile”。(Bash 更喜欢“~/.bash_profile”而不是“~/.bash_login”)。但是,默认情况下,这些文件不会影响图形会话。
  • ~/.bashrc- 由于 Ubuntu 当前默认设置各种脚本文件的方式,这可能是设置变量的最简单的地方。默认配置几乎保证该文件将在每次 bash 调用以及记录时执行进入图形环境。但是,在性能方面,这可能不是最好的做法,因为它会导致多次不必要地设置值。

http://userbase.kde.org/Session_Environment_Variables/en为 KDE 推荐这个地方:

KDE 将执行它找到的任何$HOME/.kde/env文件名以 结尾的脚本.sh,并且它将维护由它们设置的所有环境变量。您要设置的任何变量也必须导出,这一点很重要。

https://help.ubuntu.com/community/ComposeKey#XIM建议修改~/.gnomerc~/.Xsession


hlo*_*dal 6

可能是在某处未设置 SDL_AUDIODRIVER 变量。对于与启动脚本相关的问题,我使用的一种策略是放入调试 echo 语句,通过创建/删除文件可以轻松启用/禁用。你可以先添加

debug_msg() {
        test -f $HOME/.debug && echo "$@" 1>&2
}

debug_msg "running ~/.bashrc ($0), SDL_AUDIODRIVER = '$SDL_AUDIODRIVER'"
Run Code Online (Sandbox Code Playgroud)

到 .bashrc、.bash_profile、.profile 和 /etc/profile 以查看它的值以及它是否/在哪里发生变化。