¿Cómo configuro una variable ambiental para una sesión de GNOME?

15

En mi sistema, para aplicaciones que usan SDL, necesito establecer una variable ambiental:

export SDL_AUDIODRIVER=alsa

para que el sonido funcione correctamente. ¿Cómo configuro mi sesión de GNOME para que esta variable esté presente en todas las aplicaciones (por lo tanto, si ejecuto una aplicación a través de Nautilus o utilizo DBGL , las aplicaciones funcionan correctamente)?

EDITAR:

Los archivos de configuración que configuré (y reinicio mi máquina después de cada uno) no sirvieron de nada:

  • .xsession
  • .xsessionrc
  • .gnomerc
  • .bash_profile
  • .profile<- Esto funciona en el caso general, pero no cuando su distribución está configurando la variable en otro lugar.
  • /etc/profile
Bernardo
fuente
¿Estás seguro de que esto debe ser una variable de entorno? Parece que podría ser algún otro tipo de escenario. ¿Has buscado en el applet de configuración de sonido del sistema?
codeLes
De hecho lo hace. Así es como SDL descubre qué backend usar. Desearía que solo usara un archivo de configuración, pero SDL es bastante consistente en su uso de variables ambientales para dictar el comportamiento.
Bernard
1
Bueno, sí, es una opción entre recompilar SDL o establecer una variable ambiental. Creo que estoy haciendo la elección correcta. : p Esto funciona (es decir, en un shell, funciona) es solo la cuestión espinosa de hacer que GNOME propague la variable para aplicaciones que no se inician desde un shell, ese es el problema. Gracias por su continua ayuda.
Bernard
¿En qué distribución está esto? (Estoy de acuerdo en que la configuración para gdm es realmente difícil de seguir, así que mi primer pensamiento, "solo mira en / etc / gdm / y lee los scripts" es muy difícil). Aquí, .profile parece funcionar bien. (debian / testing)
Anders Eurenius el

Respuestas:

6

Podría ser que la variable SDL_AUDIODRIVER se esté desarmando en alguna parte. Una estrategia que utilizo para problemas con cosas relacionadas con los scripts de inicio es colocar declaraciones de depuración de eco que son fáciles de habilitar / deshabilitar creando / eliminando un archivo. Podrías comenzar agregando

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

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

a .bashrc, .bash_profile, .profile y / etc / profile para ver qué valor tiene y si / dónde está cambiando.

hlovdal
fuente
Mmm, esos son mis pensamientos actuales también. Está configurado en 'pulso', y eso debe estar configurado en algún lugar por OpenSUSE. Haré un trabajo de detective cuando llegue a casa.
Bernard
6

https://help.ubuntu.com/community/EnvironmentVariables habla sobre cuatro lugares donde podemos establecer las variables de entorno:

  • ~/.pam_environment- [...] No es un archivo de script, sino que consiste en expresiones de asignación, una por línea. […] Requiere un reinicio de sesión para inicializar las variables. [...]
  • ~/.profile - Este es probablemente el mejor archivo para colocar asignaciones de variables de entorno, ya que el DisplayManager lo ejecuta automáticamente durante la sesión de escritorio del proceso de inicio, así como el shell de inicio de sesión cuando se inicia sesión desde la consola de texto.
  • ~/.bash_profileo ~/.bash_login- Si existe uno de estos archivos, bash lo ejecuta en lugar de "~ / .profile" cuando se inicia como un shell de inicio de sesión. (Bash preferirá "~ / .bash_profile" a "~ / .bash_login"). Sin embargo, estos archivos no influirán en una sesión gráfica de forma predeterminada.
  • ~/.bashrc- Debido a la forma en que Ubuntu configura actualmente los diversos archivos de script de forma predeterminada, este puede ser el lugar más fácil para establecer variables. La configuración predeterminada casi garantiza que este archivo se ejecutará en todas y cada una de las invocaciones de bash, así como durante el registro en el entorno gráfico. Sin embargo, en términos de rendimiento, esto puede no ser lo mejor, ya que hará que los valores se establezcan innecesariamente muchas veces.

http://userbase.kde.org/Session_Environment_Variables/en sugiere este lugar para KDE:

KDE ejecutará cualquier script que encuentre en $HOME/.kde/envcuyo nombre de archivo termine .sh, y mantendrá todas las variables de entorno establecidas por ellos. Es importante que cualquier variable que desee establecer también se exporte.

https://help.ubuntu.com/community/ComposeKey#XIM sugiere modificar ~/.gnomerco ~/.Xsession.

Denilson Sá Maia
fuente
1

Cree un .gnomercarchivo en su $ HOME que es un script de shell ( como.bashrc ) que establece todas las variables que desea.

Mike McQuaid
fuente
Esto no está funcionando para mí, desafortunadamente.
Bernard
¿Has intentado abrir gnome-terminal y has confirmado que no aparece en env?
Mike McQuaid
1
@ Mike: está en mi .bashrc para que aparezca, pero sería inexacto. Emacs y M-x getenvconfirma que no se anula para las aplicaciones GUI.
Bernard
0

¿Has intentado crear la variable de entorno int .profile o / etc / profile ?

Eso debería funcionar y ya debería existir. A diferencia de .bashrc, que es por sesión de terminal, estos se inician al iniciar sesión en su sesión.

codeLes
fuente
Por desgracia, sin efecto.
Bernard