Як встановити змінну навколишнього середовища для сеансу GNOME?


15

У моїй системі для програм, які використовують SDL, потрібно встановити змінну середовища:

export SDL_AUDIODRIVER=alsa

щоб звук працював належним чином. Як налаштувати сеанс GNOME так, щоб ця змінна була присутнім для всіх програм (тому якщо я запускаю програму через Nautilus або використовую DBGL , програми працюють належним чином)?

Редагувати:

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

  • .xsession
  • .xsessionrc
  • .gnomerc
  • .bash_profile
  • .profile<- Це працює в загальному випадку, але не тоді, коли ваш дистрибутив встановлює змінну в іншому місці.
  • /etc/profile

Ви впевнені, що це має бути змінною середовища? Здається, це може бути якась інша обстановка. Ви копали в аплеті налаштувань звуку системи?
codeLes

Це дійсно так. Ось як SDL з'ясовує, який бекенд використовувати. Я хотів би, щоб він просто використовував файл конфігурації, але SDL досить послідовний у використанні змінних навколишнього середовища для диктування поведінки.
Бернард


1
Ну так, це вибір між перекомпіляцією SDL або встановленням змінної середовища. Я думаю, що роблю правильний вибір. : p Це працює (тобто в оболонці, це працює), це просто кричуща проблема отримання GNOME для розповсюдження змінної для додатків, не запущених із оболонки. Дякую за постійну допомогу.
Бернард

У чому це дистрибуція ?! (Я погоджуюсь, що конфігурацію gdm насправді важко дотримуватися, тому моя перша думка "просто загляньте в / etc / gdm / і прочитайте сценарії" - це сильний біль.) Тут .profile, здається, працює просто чудово. (debian / testing)
Anders Eurenius

Відповіді:


6

Можливо, змінна 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, щоб побачити, яке значення має та чи / де воно змінюється.


Ммм, це теж мої нинішні думки. Він встановлений на "імпульс", і це повинно бути встановлено десь OpenSUSE. Коли я повернуся додому, я виконуватиму детективну роботу.
Бернард

6

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 ), який встановлює всі необхідні змінні.


На жаль, це не працює для мене.
Бернард

Ви спробували відкрити gnome-термінал і підтвердили, що він не відображається в env?
Майк МакКвайд

1
@Mike: це в моєму .bashrc, щоб воно відображалося, але було б неточним. Emacs і M-x getenvпідтверджує, що його не змінюють для GUI-додатків.
Бернард

0

Ви спробували створити змінну середовища int .profile або / etc / profile ?

Це має працювати і вже повинно існувати. На відміну від .bashrc, який складається за термінальний сеанс, вони ініціюються при вході в сеанс.


На жаль, ніякого ефекту.
Бернард
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.