¿Es $ PATH solo un archivo con una lista (en orden de preferencia) de directorios?

0

¿Tengo problemas para entender exactamente cómo funciona $ PATH?

Estoy en una Mac ... Si instalo Python con Homebrew, instalará Python en el directorio / opt / local / bin.

Ahora, asumiendo que Homebrew no realizó ningún cambio en mi perfil de bash, si ejecuto un script genérico de Python, se ejecutará utilizando el sistema incluido en Python ubicado en la biblioteca, creo.

Entiendo que si entro en mi perfil de bash y agrego esta línea:

export PATH=/opt/local/bin:$PATH

luego agregará estos directorios al frente de la lista.

Supongo que la pregunta que tengo es, ¿por qué agrego esta línea aquí? ¿Por qué no puedo ir directamente a la fuente que creo que es $ PATH y agregar la línea manualmente allí.
¿Es $ PATH un archivo? Y si es así, ¿dónde está ubicado?

    
pregunta 01.01.2016 - 02:48

1 respuesta

2

La ruta del shell (es decir, PATH) para un usuario en OSX es una variable que define un conjunto de ubicaciones en el sistema de archivos mediante el cual el usuario puede usar ciertas aplicaciones, comandos y scripts de shell sin la necesidad de Especifique la ruta completa a ese comando o programa en la Terminal.

Si ingresa abc en la Terminal, se ejecutará la primera aparición de abc en una de las rutas definidas en PATH.

Para acceder o imprimir la variable PATH, debe usar $ PATH.

Ejemplo:

echo $PATH

La variable PATH tiene una parte general y una parte específica del usuario.

1. Parte general:

La parte general se define por el archivo (superior) / etc / paths y por el contenido (inferior) de la carpeta /etc/paths.d .

El contenido predeterminado del archivo / etc / rutas (en OS X) es:

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

La carpeta predeterminada /etc/paths.d está vacía. En sistemas antiguos con una instalación X11, la carpeta contiene un archivo llamado 50-X11 con el contenido

/usr/X11/bin

que agrega una ruta adicional ( / usr / X11 / bin ) a PATH.

El número- añadido simplemente define el orden de carga.

Mi carpeta /etc/paths.d contiene los siguientes archivos:

/etc/paths.d/40-mysql    #file content: /usr/local/mysql/bin
/etc/paths.d/50-X11      #file content: /usr/X11/bin
/etc/paths.d/60-testdisk #file content: /usr/local/testdisk
/etc/paths.d/70-git      #file content: /usr/local/git/bin

El PATH resultante es

echo PATH$ 
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/mysql/bin:/usr/X11/bin:/usr/local/testdisk:/usr/local/git/bin

2. Parte específica del usuario:

La parte específica del usuario se define en el archivo ~ / .bash_profile . Si ha creado un contenedor de carpetas en su carpeta de usuario e instalado algunas aplicaciones allí, puede agregar la siguiente línea en ~/.bash_profile

export PATH="/Users/username/bin:$PATH"

o

export PATH="$PATH:/Users/username/bin"

La primera entrada preferiblemente ejecuta un comando abc que se encuentra en la carpeta / bin del usuario, la segunda es un comando abc que se encuentra en la ruta general antes de ejecutar uno con el mismo nombre en la carpeta ~ / bin.

Esta parte de PATH definida por .bash_profile solo es efectiva para el usuario respectivo.

Para agregar la ruta ingresada en .bash_profile a la RUTA actual, inmediatamente debe obtener el archivo una vez:

source ~/.bash_profile

3. Rutas temporales

Al emitir export PATH="/Users/username/bin:$PATH" o export PATH="$PATH:/Users/username/bin" en la Terminal, puede agregar una ruta temporalmente.

Esta parte de PATH se pierde después de cerrar la ventana de la Terminal, cerrar sesión o reiniciar la Mac.

Ejemplos (usando la parte general de arriba):

El archivo ~ / .bash_profile contiene export PATH="/Users/username/bin:$PATH" y usted emite en la Terminal export PATH="/Users/username/bin2:$PATH" , luego el PATH resultante es:

/Users/username/bin2:/Users/username/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/mysql/bin:/usr/X11/bin:/usr/local/testdisk:/usr/local/git/bin
\____temp. path_____/

El archivo ~ / .bash_profile contiene export PATH="$PATH:/Users/username/bin" y usted emite en la Terminal export PATH="/Users/username/bin2:$PATH" , luego el PATH resultante es:

/Users/username/bin2:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/mysql/bin:/usr/X11/bin:/usr/local/testdisk:/usr/local/git/bin:/Users/username/bin
\____temp. path_____/

Summary

PATH (o $ PATH) está definido por varios archivos: / etc / path, los archivos en /etc/paths.d y ~ / .bash_profile y en caso de agregar una ruta temporal por contenido RAM adicional.

    
respondido por el klanomath 01.01.2016 - 15:11

Lea otras preguntas en las etiquetas