¿Dónde está establecida la variable $ PATH en todo el sistema?

10

Estoy usando Ubuntu Desktop 14.04, y como tal, estoy usando el shell sin inicio de sesión. Cuando abro el terminal GUI, primero las sesiones de shell sin inicio de sesión leen los siguientes archivos de inicio:

/etc/bash.bashrc
~/.bashrc

Los shells sin inicio de sesión heredan el entorno del proceso padre, que es un shell de inicio de sesión, por lo que la sesión también lee los siguientes archivos de inicio:

/etc/profile
~/.bash_profile

Sin embargo, no puedo encontrar el $PATHpor caminos de todo el sistema como /bin, /sbin, /usr/bin, /usr/sbin, sistema en cualquiera de estos archivos. ¿Dónde está el $PATHconjunto de estos directorios?

Donato
fuente

Respuestas:

16

El sistema (predeterminado) en todo el sistema PATHse establece en el /etc/environmentarchivo.

$ cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

Básicamente es el lugar para guardar las variables de entorno global.

heemayl
fuente
+1, sin embargo, ¿sabe si $PATHes heredado por el shell de inicio de sesión principal o si cada bashinstancia lo vuelve a cargar ?
kos
@kos Todos los procesos secundarios heredan el entorno del shell principal a menos que, por supuesto, se ejecuten en un entorno modificado ...
heemayl
Noto que el shell no parece expandir la $HOMEvariable. Por ejemplo, agregar $HOME/.composer/vendor/bina PATHin /etc/environmentno habilita la ejecución de binarios en este directorio sin un prefijo de ruta. Usar ~/.composer/vendor/bintampoco funciona. Estoy encontrando que es necesario añadir la ruta absoluta, por ejemplo: /home/vagrant/.composer/vendor/bin. Esto parece relacionado (aunque no explica este comportamiento): askubuntu.com/questions/402353/…
Ben Johnson
2
@BenJohnson Eso es simplemente porque /etc/environment(y ~/.pam/environment) es leído por el pam_envmódulo PAM, no por shell o cualquier otra cosa que entienda las variables de shell / entorno; Lo mismo ocurre con la ~expansión. Por lo tanto, debe usar la ruta absoluta allí.
heemayl