12

В моей системе для приложений, использующих SDL, мне нужно установить переменную среды:

export SDL_AUDIODRIVER=alsa

чтобы звук работал правильно. Как настроить сеанс GNOME таким образом, чтобы эта переменная присутствовала во всех приложениях (поэтому, если я запускаю приложение через Nautilus или использую DBGL, приложения работают правильно)?

РЕДАКТИРОВАТЬ:

Конфигурационные файлы, которые я установил (и сбрасывал мой компьютер после каждого) безрезультатно:

  • .xsession
  • .xsessionrc
  • .gnomerc
  • .bash_profile
  • .profile <- Это работает в общем случае, но не тогда, когда ваш дистрибутив устанавливает переменную в другом месте.
  • /etc/profile

4 ответа4

6

Возможно, переменная SDL_AUDIODRIVER где-то не установлена. Одна из стратегий, которую я использую для решения проблем, связанных со сценариями запуска, заключается в том, чтобы добавить отладочные операторы echo, которые просто включить / отключить путем создания / удаления файла. Вы можете начать с добавления

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

debug_msg "running ~/.bashrc ($0), SDL_AUDIODRIVER = '$SDL_AUDIODRIVER'"

в .bashrc, .bash_profile, .profile и /etc /profile, чтобы увидеть, какое значение оно имеет и если / где оно меняется.

5

https://help.ubuntu.com/community/EnvironmentVariables рассказывает о четырех местах, где мы можем установить переменные среды:

  • ~/.pam_environment - […] Это не файл сценария, а скорее состоит из выражений присваивания, по одному на строку. […] Требуется повторный вход в систему для инициализации переменных. [...]
  • ~/.profile - Вероятно, это лучший файл для размещения назначений переменных среды, поскольку он автоматически выполняется DisplayManager во время сеанса рабочего стола при запуске, а также оболочкой входа в систему при входе в систему с текстовой консоли.
  • ~/.bash_profile или ~/.bash_login - если один из этих файлов существует, 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 .

1

Создайте файл .gnomerc в вашем $ HOME, который представляет собой скрипт оболочки (например, .bashrc), который устанавливает все переменные, которые вы хотите.

0

Вы пытались создать переменную окружения int .profile или /etc/profile?

Это должно работать и уже должно существовать. В отличие от .bashrc, который относится к сеансу терминала, они инициируются при входе в сеанс.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .