He leído en un par de lugares que PATH
se establece en /etc/profile
o el .profile
archivo que está en el directorio de inicio.
¿Son estos los únicos lugares en los que se establece el camino? Quiero entenderlo mejor.
En el /etc/profile
archivo, como dice el siguiente comentario "system-wide .profile file for the Bourne shell"
. ¿Significa eso que los archivos de perfil son los principales archivos de configuración para bash?
En ese archivo no veo el PATH
var se establece en absoluto. En el .profile
archivo en el directorio de inicio hay esta línea:
PATH="$HOME/bin:$PATH"
Eso es restablecer PATH
por el aspecto porque está concatenando el $PATH
ya establecido cadena con $HOME/bin:
¿derecho? Pero si etc/profile
y ~/.profile
son los únicos archivos que configuran PATH
donde está $PATH
proveniente de esa línea de código si no está definido en /etc/profile
?
¿Puede alguien con experiencia dar una explicación amplia y detallada de la PATH
? ¿variable? ¡Gracias!
Respuesta aceptada:
Hay muchos lugares donde PATH
se puede configurar.
El login
programa lo establece en un valor predeterminado. La configuración de este valor predeterminado depende del sistema. En la mayoría de los sistemas Linux no integrados, se toma de /etc/login.defs
, con diferentes valores para root y para otros usuarios. Consulta el login(1)
manual de su sistema para averiguar lo que hace.
En sistemas que usan PAM, específicamente el pam_env
módulo, las variables de entorno se pueden configurar en el archivo de todo el sistema /etc/environment
y el archivo por usuario ~/.pam_environment
.
Luego, la mayoría de las formas de iniciar sesión (pero no los trabajos cron) ejecutan un shell de inicio de sesión que lee los archivos de configuración de todo el sistema y por usuario. Estos archivos pueden modificar el valor de PATH
, generalmente para agregar entradas, pero a veces de otras maneras. Los archivos que se leen dependen de cuál sea el shell de inicio de sesión. Los shells estilo Bourne/POSIX leen /etc/profile
y ~/.profile
. Bash lee /etc/profile
, pero para el archivo por usuario solo lee el primer archivo existente entre ~/.bash_profile
, ~/.bash_login
y ~/.profile
. Zsh lee /etc/zshenv
, ~/.zshenv
, /etc/zprofile
, ~/.zprofile
, /etc/zlogin
y ~/.zlogin
. Muchas sesiones de GUI se organizan para cargar /etc/profile
y ~/.profile
, pero esto depende del administrador de pantalla, del entorno de escritorio u otro script de inicio de sesión, y de cómo cada distribución los haya configurado.