Como eu defino uma variável de ambiente para uma sessão do GNOME?

11

No meu sistema, para aplicativos que usam o SDL, preciso definir uma variável de ambiente:

export SDL_AUDIODRIVER=alsa

para que o som funcione corretamente. Como configuro minha sessão do GNOME para que essa variável esteja presente para todos os aplicativos (por isso, se eu executar um aplicativo no Nautilus ou usar DBGL , os aplicativos funcionam corretamente)?

EDITAR:

Arquivos de configuração que defini (e redefinir minha máquina após cada um) sem sucesso:

  • .xsession
  • .xsessionrc
  • .gnomerc
  • .bash_profile
  • .profile < - Isso funciona no caso geral, mas não quando sua distro está configurando a variável em outro lugar.
  • /etc/profile
por Bernard 06.08.2009 / 16:14

4 respostas

6

Pode ser que a variável SDL_AUDIODRIVER esteja sendo desativada em algum lugar. Uma estratégia que eu uso para problemas com coisas relacionadas a scripts de inicialização é colocar em instruções de eco de depuração que é simples de ativar / desativar criando / excluindo um arquivo. Você poderia começar adicionando

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

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

para .bashrc, .bash_profile, .profile e / etc / profile para ver o valor que tem e se / onde está mudando.

    
por 10.08.2009 / 15:42
5

link fala sobre quatro lugares onde podemos definir as variáveis de ambiente:

  • ~/.pam_environment - […] It is not a script file, but rather consists of assignment expressions, one per line. […] requires a re-login in order to initialize the variables. […]
  • ~/.profile - This is probably the best file for placing environment variable assignments, since it gets executed automatically by the DisplayManager during the start-up process desktop session as well as by the login shell when one logs-in from the textual console.
  • ~/.bash_profile or ~/.bash_login - If one of these file exist, bash executes it rather then "~/.profile" when it is started as a login shell. (Bash will prefer "~/.bash_profile" to "~/.bash_login"). However, these files won't influence a graphical session by default.
  • ~/.bashrc - Because of the way Ubuntu currently sets up the various script files by default, this may be the easiest place to set variables in. The default configuration nearly guarantees that this file will be executed in each and every invocation of bash as well as while logging in to the graphical environment. However, performance-wise this may not be the best thing to do since it will cause values to be unnecessarily set many times.

link sugere este lugar para o KDE:

KDE will execute any script it finds in $HOME/.kde/env whose filename ends in .sh, and it will maintain all the environment variables set by them. It is important that any variable you want to set must be also exported.

O

link sugere a modificação de ~/.gnomerc ou ~/.Xsession .

    
por 09.03.2012 / 16:06
1

Crie um arquivo .gnomerc em seu $ HOME, que é um script de shell ( como .bashrc ) que define todas as variáveis que você deseja.

    
por 06.08.2009 / 16:44
0

Já tentou criar a variável de ambiente int .profile ou / etc / profile ?

Isso deve funcionar e já deveria existir. Ao contrário de .bashrc , que é por sessão de terminal, elas são iniciadas no login de sua sessão.

    
por 06.08.2009 / 16:49