在我的系统上,对于使用 SDL 的应用程序,我需要设置一个环境变量:
export SDL_AUDIODRIVER=alsa
才能使声音正常工作。如何设置我的 GNOME 会话,以便此变量适用于所有应用程序(因此,如果我通过 Nautilus 运行应用程序,或者使用数据库管理系统,应用程序是否正常运行?
编辑:
我已经设置了配置文件(并且每次设置后都重置了我的计算机),但无济于事:
.xsession
.xsessionrc
.gnomerc
.bash_profile
.profile
<-- 这在一般情况下有效,但当你的发行版在其他地方设置变量时则无效。/etc/profile
答案1
可能是 SDL_AUDIODRIVER 变量在某个地方被取消设置了。我用于解决启动脚本相关问题的一种策略是放入调试回显语句,通过创建/删除文件可以轻松启用/禁用该语句。您可以先添加
debug_msg() {
test -f $HOME/.debug && echo "$@" 1>&2
}
debug_msg "running ~/.bashrc ($0), SDL_AUDIODRIVER = '$SDL_AUDIODRIVER'"
到 .bashrc、.bash_profile、.profile 和 /etc/profile 查看它具有什么值以及它是否/在哪里发生变化。
答案2
https://help.ubuntu.com/community/EnvironmentVariables讨论了我们可以设置环境变量的四个地方:
~/.pam_environment
- […] 它不是脚本文件,而是由每行一个赋值表达式组成。[…] 需要重新登录才能初始化变量。[…]~/.profile
- 这可能是放置环境变量分配的最佳文件,因为它会在启动过程桌面会话期间由 DisplayManager 自动执行,也会在从文本控制台登录时由登录 shell 自动执行。~/.bash_profile
或者~/.bash_login
- 如果其中一个文件存在,则 bash 在作为登录 shell 启动时会执行该文件而不是“~/.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
。
答案3
在 $HOME 中创建一个.gnomerc
文件,该文件是 shell 脚本 (喜欢.bashrc
) 设置您想要的所有变量。
答案4
有些答案不适用于 Gnome。其他一些答案现在可能不起作用。
看用户服务环境定义。
您可以(为自己)创建一个类似的文件~/.config/environment.d/*.conf
并在其中定义变量。
示例(适用于所有用户)
% more /etc/environment
#
# This file is parsed by pam_env module
#
# Syntax: simple "KEY=VAL" pairs on separate lines
#
EDITOR=/usr/bin/nano
来自 man pam_env
:
PAM_ENV(8) Linux-PAM Manual PAM_ENV(8)
NAME
pam_env - PAM module to set/unset environment variables
这将在登录时设置环境,更新需要注销登录。
它可以与 Gnome 配合使用,但显然更普遍地与 systemd 相关。
来自维基百科:
systemd 是一个软件套件,为 Linux 操作系统提供一系列系统组件。其主要目的是统一 Linux 发行版之间的服务配置和行为。其主要组件是“系统和服务管理器”——用于引导用户空间和管理用户进程的 init 系统。