В моей системе для приложений, использующих SDL, мне нужно установить переменную среды:
export SDL_AUDIODRIVER=alsa
чтобы звук работал правильно. Как настроить сеанс GNOME таким образом, чтобы эта переменная присутствовала во всех приложениях (поэтому, если я запускаю приложение через Nautilus или использую DBGL, приложения работают правильно)?
РЕДАКТИРОВАТЬ:
Конфигурационные файлы, которые я установил (и сбрасывал мой компьютер после каждого) безрезультатно:
.xsession
.xsessionrc
.gnomerc
.bash_profile
.profile<- Это работает в общем случае, но не тогда, когда ваш дистрибутив устанавливает переменную в другом месте.
/etc/profile
Вы уверены, что это должна быть переменная окружения? Кажется, это может быть какой-то другой вид обстановки. Вы копались в апплете системных настроек звука?
codeLes 15 лет назад
0
Это действительно так. Вот как SDL выясняет, какой бэкэнд использовать. Я бы хотел, чтобы он просто использовал файл конфигурации, но SDL достаточно последовательно использует переменные окружения для определения поведения.
Bernard 15 лет назад
0
Вы видели это: http://modarchive.org/forums/index.php?topic=1879.0
codeLes 15 лет назад
0
Ну да, это выбор между перекомпиляцией SDL или установкой переменной среды. Я думаю, что делаю правильный выбор. : p Это работает (т. е. в оболочке, это работает), это просто сложная проблема получения GNOME для распространения переменной для приложений, не запущенных из оболочки, которая является проблемой. Спасибо за вашу постоянную помощь.
Bernard 15 лет назад
1
В каком дистрибутиве это ?! (Я согласен, что за конфигурацией для gdm действительно трудно следовать, поэтому моя первая мысль: «просто посмотрите в / etc / gdm / и прочитайте сценарии» - это большая боль.) Здесь .profile, кажется, работает просто отлично. (Debian / тестирование)
Anders Eurenius 15 лет назад
0
Кроме того, вы уверены, что его там нет (и SDL игнорирует его)? Вы можете повторить это в xterm? (установить, затем повторить эхо?)
Anders Eurenius 15 лет назад
0
Это действительно не там. Запустите emacs в xterm, это означает "alsa" для Mx getenv. Запустите GTK + версию Emacs, она повторяет «пульс». Я предполагаю, что ребята из SUSE (OpenSUSE 11.1) устанавливают его где-то еще.
Bernard 15 лет назад
0
Возможно, переменная SDL_AUDIODRIVER где-то не установлена. Одна из стратегий, которую я использую для решения проблем, связанных со сценариями запуска, заключается в том, чтобы добавить отладочные операторы echo, которые просто включить / отключить путем создания / удаления файла. Вы можете начать с добавления
в .bashrc, .bash_profile, .profile и / etc / profile, чтобы увидеть, какое значение оно имеет и если / где оно меняется.
Ммм, это тоже мои нынешние мысли. Он установлен на «импульс», и это должно быть установлено _somewhere_ OpenSUSE. Я сделаю детективную работу, когда вернусь домой.
Bernard 15 лет назад
0
~/.pam_environment- […] Это не файл сценария, а скорее состоит из выражений присваивания, по одному на строку. […] Требуется повторный вход в систему для инициализации переменных. [...]
~/.profile - Это, вероятно, лучший файл для размещения назначений переменных среды, поскольку он автоматически выполняется DisplayManager во время сеанса рабочего стола при запуске, а также оболочкой входа в систему при входе в систему с текстовой консоли.
~/.bash_profileили ~/.bash_login- если один из этих файлов существует, bash выполняет его, а не "~ / .profile", когда он запускается как оболочка входа в систему. (Bash предпочтет ~ / .bash_profile "~ / .bash_login"). Однако по умолчанию эти файлы не влияют на графический сеанс.
~/.bashrc- Из-за способа, которым Ubuntu в настоящее время настраивает различные файлы сценариев по умолчанию, это может быть самым простым местом для установки переменных. Конфигурация по умолчанию почти гарантирует, что этот файл будет выполняться при каждом вызове bash, а также при ведении журнала. в графической среде. Однако, с точки зрения производительности, это может быть не лучшим решением, так как это приведет к ненужной установке значений много раз.
KDE выполнит любой скрипт, в $HOME/.kde/envкотором заканчивается имя файла .sh, и будет поддерживать все переменные окружения, установленные ими. Важно, что любая переменная, которую вы хотите установить, также должна быть экспортирована.
Создайте .gnomercфайл в вашем $ HOME, который представляет собой сценарий оболочки ( например.bashrc ), который устанавливает все переменные, которые вы хотите.
Это не работает для меня, к сожалению.
Bernard 15 лет назад
0
Вы пытались открыть gnome-терминал и подтвердили, что он не отображается в env?
Mike McQuaid 15 лет назад
0
@Mike: он есть в моем .bashrc, так что он появится, но будет неточным. Emacs и `Mx getenv` подтверждают, что он не переопределяется для приложений с графическим интерфейсом.
Bernard 15 лет назад
1
0
codeLes
Вы пытались создать переменную окружения int .profile или / etc / profile ?
Это должно работать и уже должно существовать. В отличие от .bashrc, который относится к сеансу терминала, они инициируются при входе в сеанс.