/ etc / profile no se obtiene para shells de inicio de sesión

0

El indicador -l a sh debe generar los contenidos de /etc/profile y otros scripts de perfil como ~/.profile , que generalmente proporcionan el conjunto inicial de variables de entorno para una sesión de inicio de sesión.

Con eso en mente, ejecuto el comando env -i sh -l -c env y espero ver un entorno nuevo más los cambios realizados por /etc/profile . Sin embargo, /etc/profile nunca se obtiene, a pesar de que es el supuesto comportamiento de la marca -l . En otros sistemas que no sean MacOS, este indicador -l hace que /etc/profile se cargue correctamente.

¿Por qué esto no funciona en MacOS y cómo puedo asegurarme de que los scripts de perfil se hayan obtenido correctamente en el orden correcto, como lo harían al iniciar sesión? (Tenga en cuenta que no quiero una sesión de shell interactiva)

    
pregunta Score_Under 31.07.2017 - 15:32

1 respuesta

1

A diferencia de otros sistemas, sh es su propio binario compilado como si llamara a bash --posix . Del manual de referencia de Bash:

The POSIX startup files are executed ($ENV) rather than the normal Bash files.

env -i elimina todas las variables de entorno. Incluso agregarlo nuevamente como env -i ENV=/etc/profile no funciona.

En lugar de sh solo usa bash :

env -i bash -l -c env
    
respondido por el fd0 31.07.2017 - 17:40

Lea otras preguntas en las etiquetas