Come posso impostare una variabile ambientale per una sessione GNOME?


15

Sul mio sistema, per le app che utilizzano SDL, devo impostare una variabile ambientale:

export SDL_AUDIODRIVER=alsa

per far funzionare correttamente il suono. Come posso impostare la mia sessione GNOME in modo che questa variabile sia presente per tutte le applicazioni (quindi se eseguo un'applicazione tramite Nautilus o utilizzo DBGL , le app funzionano correttamente)?

MODIFICARE:

File di configurazione che ho impostato (e ripristinato la mia macchina dopo ciascuno) senza alcun risultato:

  • .xsession
  • .xsessionrc
  • .gnomerc
  • .bash_profile
  • .profile<- Funziona nel caso generale, ma non quando la tua distribuzione sta impostando la variabile altrove.
  • /etc/profile

Sei sicuro che questa debba essere una variabile d'ambiente? Sembra che potrebbe essere un altro tipo di impostazione. Hai cercato l'applet delle impostazioni audio del sistema?
codeLes

Lo fa davvero. Ecco come SDL scopre quale backend utilizzare. Vorrei che avesse appena usato un file di configurazione, ma SDL è abbastanza coerente nell'uso delle variabili ambientali per dettare il comportamento.
Bernard,


1
Bene sì, è una scelta tra ricompilare SDL o impostare una variabile ambientale. Penso di fare la scelta giusta. : p Funziona (ovvero, in una shell, funziona) è solo il problema spinoso di far propagare a GNOME la variabile per le app non avviate da una shell che è il problema. Grazie per il vostro continuo aiuto.
Bernard,

In che distro si trova ?! (Sono d'accordo sul fatto che la configurazione di gdm è davvero difficile da seguire, quindi il mio primo pensiero, "basta guardare in / etc / gdm / e leggere gli script" è molto doloroso.) Qui, .profile sembra funzionare bene. (debian / testing)
Anders Eurenius,

Risposte:


6

È possibile che la variabile SDL_AUDIODRIVER sia stata disattivata da qualche parte. Una strategia che uso per problemi relativi a cose relative agli script di avvio è quella di inserire istruzioni di eco di debug che siano semplici da abilitare / disabilitare creando / eliminando un file. Potresti iniziare aggiungendo

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

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

a .bashrc, .bash_profile, .profile e / etc / profile per vedere quale valore ha e se / dove sta cambiando.


Mmm, anche quelli sono i miei pensieri attuali. È impostato su "pulse" e deve essere impostato da qualche parte da OpenSUSE. Farò qualche lavoro investigativo quando torno a casa.
Bernard,

6

https://help.ubuntu.com/community/EnvironmentVariables parla di quattro luoghi in cui possiamo impostare le variabili di ambiente:

  • ~/.pam_environment- […] Non è un file di script, ma è piuttosto costituito da espressioni di assegnazione, una per riga. […] Richiede un nuovo accesso per inizializzare le variabili. [...]
  • ~/.profile - Questo è probabilmente il file migliore per posizionare le assegnazioni delle variabili di ambiente, poiché viene eseguito automaticamente da DisplayManager durante la sessione desktop del processo di avvio, nonché dalla shell di accesso quando si accede dalla console testuale.
  • ~/.bash_profileoppure ~/.bash_login- Se esiste uno di questi file, bash lo esegue piuttosto che "~ / .profile" quando viene avviato come shell di login. (Bash preferirà "~ / .bash_profile" a "~ / .bash_login"). Tuttavia, questi file non influenzeranno una sessione grafica per impostazione predefinita.
  • ~/.bashrc- A causa del modo in cui Ubuntu attualmente imposta i vari file di script per impostazione predefinita, questo potrebbe essere il posto più semplice in cui impostare le variabili. La configurazione predefinita garantisce quasi che questo file verrà eseguito in ogni invocazione di bash e durante la registrazione nell'ambiente grafico. Tuttavia, dal punto di vista delle prestazioni, questa potrebbe non essere la cosa migliore da fare poiché provocherà l'impostazione inutile di molte volte.

http://userbase.kde.org/Session_Environment_Variables/en suggerisce questo posto per KDE:

KDE eseguirà tutti gli script che trova nel $HOME/.kde/envcui nome file termina .she manterrà tutte le variabili d'ambiente impostate da loro. È importante esportare anche qualsiasi variabile che si desidera impostare.

https://help.ubuntu.com/community/ComposeKey#XIM suggerisce di modificare ~/.gnomerco ~/.Xsession.


1

Crea un .gnomercfile nel tuo $ HOME che è uno script di shell ( come.bashrc ) che imposta tutte le variabili che desideri.


Questo non funziona per me, sfortunatamente.
Bernard,

Hai provato ad aprire gnome-terminal e hai confermato che non compare in env?
Mike McQuaid,

1
@Mike: è nel mio .bashrc, quindi verrebbe visualizzato, ma sarebbe impreciso. Emacs e M-x getenvconferma che non viene sovrascritto per le app della GUI.
Bernard,

0

Hai provato a creare la variabile d'ambiente int .profile o / etc / profile ?

Dovrebbe funzionare e dovrebbe già esistere. A differenza di .bashrc, che è per sessione terminale, questi vengono avviati all'accesso alla sessione.


Ahimè, nessun effetto.
Bernard,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.