
Tengo que configurar una variable de entorno llamada GDK_NATIVE_WINDOWS
para arreglarel problema con los botones de Eclipse en Ubuntu. Para configurar la variable de entorno, agregué la siguiente línea a ~/.pam_environment
.
GDK_NATIVE_WINDOWS DEFAULT=verdadero
Sorprendentemente, la variable de entorno no se configura cuando estoy echo $GDK_NATIVE_WINDOWS
en una terminal. Sin embargo, todas las demás variables de entorno que he enumerado ~/.pam_environment
están configuradas correctamente. Además, cuando cambio a un tty, por ejemplo Alt+Ctrl+F1
, la variable de entorno se configura correctamente. ¿Qué hay de malo en configurar esta variable de entorno ~/.pam_environment
?
Respuesta1
Cíñete a la sintaxis simple "clave=valor" en el archivo ~/.pam_environment. Sin DEFAULT, OVERRIDE, ${HOME}, ni nada. Solo clave = valor. La página de manual a la que vinculó es solo para pam_env.conf. Consulte "man 8 pam_env", que no promete nada más. "Este módulo también puede analizar un archivo con pares simples KEY=VAL en líneas separadas".
Por cierto, poner algo como PATH=${PATH}:more/paths en ./pam_environment es una excelente manera de interrumpir casi cualquier intento de iniciar sesión, ya que PATH se establece en ${PATH}:more/pathsliteralmente(no hay mucho que encontrar allí). Para rescatar, "/bin/mv .pam_environment out_of_the_way" y vuelva a iniciar sesión.
Respuesta2
Como ha identificado, las variables de entorno deben configurarse ~/.pam_environment
según lo recomendado enhttps://help.ubuntu.com/community/EnvironmentVariables. Es más fácil decirlo que hacerlo ;)
Es posible que hayas encontrado la misma brecha de configuración que existía para mí. Consulte la solución alternativa para el hogar cifrado a continuación.
Mi ~/.pam_environment
:
PATH DEFAULT=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${HOME}/bin
IDEA_JDK DEFAULT=${HOME}/Applications/jdk
¿Por qué el feo camino estático? ${PATH}
no funcionaría para mí. Bloqueé mi inicio de sesión varias veces tratando de solucionarlo, así que me quedo con la fea copia estática de los valores predeterminados :)
Solución alternativa para carpetas de inicio cifradas
En las versiones de Ubuntu hasta e incluyendoubuntu 12.04(Precise Pangolin) Beta 2, si está utilizando un directorio de inicio cifrado deberá modificarlo /etc/pam.d/common-session
para que se cargue ~/.pam_environment
. Esta solución aparentemente funciona para versiones anteriores, pero no la he probado.
Guenther Montag (g-montag) escribió el 19 de agosto de 2010:
Esto parece ser un problema con los directorios personales cifrados. yo añadí
sesión requerida pam_env.so
al final de /etc/pam.d/common-session y ahora se lee ~/.pam_environment. En otro sistema sin directorios personales cifrados (también 10.04), no es necesaria esta solución. Quizás en mi caso el sistema intente leer ~/.pam_environment antes de descifrarlo.
Respuesta3
Tienes un espacio entre GDK_NATIVE_WINDOWS y DEFAULT=true . Esto difiere del ejemplo que vinculó.
Intentar:
GDK_NATIVE_WINDOWS=verdadero
Respuesta4
En Debian bullseye (probablemente alrededor de 2013) y Ubuntu hasta al menos 14.04 (probado en un contenedor acoplable), ~/.pam_environment no se lee según user_endir, el valor predeterminado es desactivado para pam_env (ver man 7 pam_env
). Si desea volver a habilitarlo:
echo 'session optional pam_env.so user_readenv=1' >> /etc/pam.d/common-session
es decir, configure para una sesión interactiva (CLI o inicios de sesión gráficos, como su) pam_env con user_reader en 1.
Creo que se deshabilitó en sentido ascendente debido a:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-4708"El módulo pam_env en Linux-PAM (también conocido como pam) 1.1.2 y versiones anteriores lee el archivo .pam_environment en el directorio de inicio de un usuario, lo que podría permitir a los usuarios locales ejecutar programas con un entorno no deseado ejecutando un programa que depende del PAM pam_env. controlar. "
Pensé que la descripción anterior no me resulta clara. Si eso significa que ~/.pam_environment permite cambiar el entorno del programa sin que el usuario lo sepa, entonces cualquier opción en la carpeta de inicio es igual (es decir, ~/.profile, ~/.zprofile). Mind ~/.profile debe ser leído por administradores de inicio de sesión gráficos... entonces, ¿por qué eliminar ~/.pam_environment y conservar ~/.profile?
Una forma adecuada sería tener la capacidad de configurar variables de entorno por usuario en /etc/security/pam_env.conf. Sin embargo, aún no se ha solicitado en sentido ascendente. O cualquier opción editable sólo con derechos de administrador.