El módulo pam_env PAM le permite configurarlos en /etc/environment
o dentro ~/.pam_environment
, dependiendo de si lo desea para todos los usuarios (todo el sistema) o solo su usuario (toda la sesión).
Variables de entorno de todo el sistema
La configuración de las variables de entorno que afectan al sistema en su conjunto (en lugar de solo a un usuario en particular) no debe colocarse en ninguno de los muchos scripts de nivel de sistema que se ejecutan cuando se carga el sistema o la sesión de escritorio, sino en
/etc/environment
- Este archivo está específicamente diseñado para configuraciones variables de entorno de todo el sistema. No es un archivo de script, sino que consiste en expresiones de asignación, una por línea. Específicamente, este archivo almacena la configuración regional y la configuración de ruta de todo el sistema.
Variables de entorno de toda la sesión
La configuración de la variable de entorno que debería afectar solo a un usuario en particular (en lugar del sistema en su conjunto) debe establecerse en:
~/.pam_environment
- Este archivo está específicamente diseñado para configurar el entorno de un usuario. No es un archivo de script, sino que consiste en expresiones de asignación, una por línea.
Nota: El uso .pam_environment
requiere un reinicio de sesión para inicializar las variables. Reiniciar solo el terminal no es suficiente para poder usar las variables.
Vea más en la wiki de Ubuntu sobre Variables de entorno .
~/.pam_environment
solución es que, de manera predeterminada, el módulo pam_env no lo lee, a menos que la distribución lo configure de otra manera. En Fedora 20 no se lee, por ejemplo.~/.xsession
cargará variables de entorno para aplicaciones X. Ver unix.stackexchange.com/questions/47359/what-is-xsession-foruser_envfile=filename
. Mi problema con pam_env es que la variable HOME puede no estar disponible dependiendo de la aplicación PAM. Lo que limita su uso a solo variables absolutas./etc/X11/Xsession.d/
... o siguiendo las líneas de ese directorio, dependiendo de su Linux (?). Escribí un poco aquí .El concepto es que después del inicio de sesión, un administrador de pantalla inicia una "Xsession" y las fuentes (!) Todo en ese directorio en orden alfabético. Simplemente puede agregar un script que modifique PATH. La Xsession será su DE en última instancia y, por lo general, todos los procesos son hijos de esa Xsession, por lo tanto, heredan el entorno PATH.
fuente
/etc/X11/Xsession.d/40x11-common_xsessionrc
Fuente de variables de entorno global. Este script generará cualquier cosa en $ HOME / .xsessionrc si el archivo está presente. Esto permite al usuario establecer variables de entorno globales para su sesión X, como la información de configuración regional.Un proceso hereda un entorno del proceso padre que lo inicia. Para cambiar la RUTA u otros valores del entorno en un elemento secundario, podemos establecer una variable en un valor en el elemento primario y exportar la variable si estamos en un shell, y luego iniciar el proceso secundario. El niño también puede leer uno o más archivos de inicialización para cambiar su propio entorno cuando se inicia.
Entonces, hay dos preguntas más para obtener una respuesta:
¿Cuál es el árbol de herencia padre / hijo que conduce al proceso que desea que se vea afectado por la RUTA o el cambio de entorno?
¿Qué archivos de inicialización utilizan / leen / obtienen los procesos relevantes en ese árbol?
Aquí está parte de la salida de ps (1) para mostrar lo que quiero decir con un árbol de herencia:
Tenga en cuenta las secuencias gráficas \ _ y los números PIP / PPID (ID de proceso y PID principal). PID 1855 se inició por (¿algún hijo de?) 1497, que se inició en 1481, que se inició por el PID 1, que se inició por el proceso ancestro 0.
Haga un seguimiento de herencia similar para el proceso que desea afectar, descubra qué archivos de inicialización son relevantes y realice el cambio a RUTA en algún lugar de ese árbol, probablemente con algo similar a:
fuente
ps
para determinar el proceso principal de un inicio de sesión GUI?