¿Cuál es la diferencia entre / etc / environment y / etc / profile?

25

Entiendo que el primero se carga antes que el segundo, pero ¿cuál es la diferencia conceptual? ¿Hay alguna buena razón por la que debería establecer algunas variables en una y no en otra? Excepto el hecho de que /etc/environmentparece existir para configurar el entorno para todos los procesos ejecutados por el sistema, mientras /etc/profileque para configurar el entorno utilizado y propagado desde el shell de inicio de sesión, ¿correcto?

Además, en una nota al margen, que tradicionalmente programa lee /etc/environment? ¿Está relacionado con POSIX, o solo una convención?

amn
fuente

Respuestas:

11

Extracto de la ayuda de Ubuntu

/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.

/etc/profile - Este archivo se ejecuta cada vez que se ingresa un shell de inicio de sesión bash (por ejemplo, al iniciar sesión desde la consola o sobre ssh), así como por el DisplayManager cuando se carga la sesión de escritorio.

Creo que todo esto es solo una convención, pero no está lejos de ser un estándar (no sé acerca de los sistemas como RedHat).

Mali
fuente
Funciona en RedHat (a partir de 7.6). El '/ etc / environment' está vacío en mi servidor y la configuración VAR=valueentró en vigor en un shell (después de volver a iniciar sesión).
DKroot
39

/etc/environmentno es parte de POSIX, pertenece a PAM (Módulo de autenticación enchufable), y solo los programas compilados con soporte PAM pueden usarlo (principalmente sistemas de inicio de sesión, que posteriormente inician el shell o el entorno del usuario). Esto significa que ni siquiera es leído por su shell.

Puedes ver los programas usando /etc/environmentcon grep -l pam_env /etc/pam.d/*.

Por /etc/environmentlo tanto, se utiliza para establecer variables para programas que generalmente no se inician desde un shell.

Neula
fuente