Jak ustawić zmienną środowiskową dla sesji GNOME?

15

W moim systemie dla aplikacji korzystających z SDL muszę ustawić zmienną środowiskową:

export SDL_AUDIODRIVER=alsa

aby dźwięk działał poprawnie. Jak skonfigurować moją sesję GNOME, aby ta zmienna była obecna dla wszystkich aplikacji (więc jeśli uruchomię aplikację przez Nautilus lub użyję DBGL , aplikacje będą działać poprawnie)?

EDYTOWAĆ:

Pliki konfiguracyjne, które ustawiłem (i zresetuję komputer po każdym) bezskutecznie:

  • .xsession
  • .xsessionrc
  • .gnomerc
  • .bash_profile
  • .profile<- Działa to w ogólnym przypadku, ale nie wtedy, gdy twoja dystrybucja ustawia zmienną gdzie indziej.
  • /etc/profile
Bernard
źródło
Czy na pewno musi to być zmienna środowiskowa? Wygląda na to, że może to być inny rodzaj ustawienia. Czy przekopałeś się w aplecie ustawień dźwięku systemu?
codeLes,
Rzeczywiście tak jest. W ten sposób SDL zastanawia się, jakiego backendu użyć. Chciałbym, aby po prostu użył pliku konfiguracyjnego, ale SDL jest dość konsekwentny w używaniu zmiennych środowiskowych do dyktowania zachowania.
Bernard,
czy widziałeś to: modarchive.org/forums/index.php?topic=1879.0
codeLes
1
Cóż, tak, jest to wybór pomiędzy rekompilacją SDL lub ustawieniem zmiennej środowiskowej. Myślę, że dokonuję właściwego wyboru. : p To działa (tzn. działa w powłoce, działa) to tylko drażliwy problem związany z propagowaniem przez GNOME zmiennej dla aplikacji, które nie zostały uruchomione z powłoki, która jest problemem. Dziękujemy za nieustającą pomoc.
Bernard,
Co to za dystrybucja ?! (Zgadzam się, że konfiguracja dla gdm jest naprawdę trudna do naśladowania, więc moja pierwsza myśl: „po prostu zajrzyj do / etc / gdm / i przeczytaj skrypty” jest bardzo bolesna.). .Profile wydaje się działać dobrze. (debian / testowanie)
Anders Eurenius

Odpowiedzi:

6

Być może zmienna SDL_AUDIODRIVER jest gdzieś rozbrojona. Jedną strategią, której używam do rozwiązywania problemów związanych ze skryptami uruchamiania, jest wstawianie instrukcji echa debugowania, które można łatwo włączyć / wyłączyć, tworząc / usuwając plik. Możesz zacząć od dodania

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

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

do .bashrc, .bash_profile, .profile i / etc / profile, aby zobaczyć jaką wartość ma i czy / gdzie się zmienia.

hlovdal
źródło
Mmm, to także moje obecne myśli. Jest ustawiony na „puls” i musi to być gdzieś ustawione przez OpenSUSE. Kiedy wrócę do domu, wykonam pracę detektywistyczną.
Bernard,
6

https://help.ubuntu.com/community/EnvironmentVariables mówi o czterech miejscach, w których możemy ustawić zmienne środowiskowe:

  • ~/.pam_environment- […] Nie jest to plik skryptu, ale składa się z wyrażeń przypisania, po jednym w wierszu. […] Wymaga ponownego logowania w celu zainicjowania zmiennych. […]
  • ~/.profile - Jest to prawdopodobnie najlepszy plik do umieszczania przypisań zmiennych środowiskowych, ponieważ jest on wykonywany automatycznie przez DisplayManager podczas sesji pulpitu procesu uruchamiania, a także przez powłokę logowania, gdy loguje się z konsoli tekstowej.
  • ~/.bash_profilelub ~/.bash_login- Jeśli jeden z tych plików istnieje, bash wykonuje go raczej niż „~ / .profile”, gdy jest uruchamiany jako powłoka logowania. (Bash woli „~ / .bash_profile” niż „~ / .bash_login”). Pliki te nie będą jednak domyślnie wpływać na sesję graficzną.
  • ~/.bashrc- Ze względu na sposób, w jaki Ubuntu obecnie domyślnie konfiguruje różne pliki skryptów, może to być najłatwiejsze miejsce do ustawienia zmiennych. Domyślna konfiguracja prawie gwarantuje, że plik ten zostanie wykonany przy każdym wywołaniu bash, a także podczas logowania w środowisku graficznym. Jednak pod względem wydajności może nie być to najlepsze, ponieważ spowoduje to, że wartości będą niepotrzebnie ustawiane wiele razy.

http://userbase.kde.org/Session_Environment_Variables/en sugeruje to miejsce dla KDE:

KDE wykona każdy znaleziony skrypt, w $HOME/.kde/envktórym kończy się nazwa pliku .sh, i zachowa wszystkie ustawione przez siebie zmienne środowiskowe. Ważne jest, aby każda zmienna, którą chcesz ustawić, musi być również eksportowana.

https://help.ubuntu.com/community/ComposeKey#XIM sugeruje zmianę ~/.gnomerclub ~/.Xsession.

Denilson Sá Maia
źródło
1

Utwórz .gnomercplik w $ HOME, który jest skryptem powłoki ( podobnym.bashrc ), który ustawia wszystkie potrzebne zmienne.

Mike McQuaid
źródło
Niestety to nie działa dla mnie.
Bernard,
Czy próbowałeś otworzyć terminal gnome i potwierdziłeś, że nie wyświetla się w env?
Mike McQuaid,
1
@Mike: jest w moim .bashrc, żeby się pojawił, ale byłby niedokładny. Emacs i M-x getenvpotwierdza, że ​​nie jest zastępowane przez aplikacje GUI.
Bernard,
0

Czy próbowałeś utworzyć zmienną środowiskową int .profile lub / etc / profile ?

To powinno działać i powinno już istnieć. W przeciwieństwie do .bashrc, który jest na sesję terminala, są one inicjowane przy logowaniu do sesji.

codeLes
źródło
Niestety, bez efektu.
Bernard,