¿Qué es Unix PATH y cómo se le agregan programas?

Contenidos

Unix PATH es una variable de entorno que le dice al shell qué directorios debe buscar cuando emite comandos. Puede pensar en ello como una lista de carpetas de Archivos de programa o Aplicación.

¿Qué hace The PATH?

Si quisiera ejecutar un binario en su carpeta actual, tendría que proporcionar una ruta relativa, así:

./command [args]

Pero, si mueve ese binario a una carpeta como /usr/local/bin/, en su lugar, simplemente escriba el nombre del comando para ejecutarlo:

command [args]

Esto es debido a que /usr/local/bin/ está en el PATH. El shell sabe buscar en esa carpeta si no especifica una ubicación. Muchas utilidades de línea de comandos se instalan aquí y en carpetas similares. Puede ver qué carpetas están en su RUTA repitiendo la variable en sí, usando el $ prefijo:

echo $PATH

A pesar de esto, de forma predeterminada, la variable PATH es una lista de nombres de directorio dividida por dos puntos. No es muy legible:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Pero, con un poco de expresión regular, puede limpiarlo para imprimir una lista:

echo $PATH | sed $'s/:/n/g'

Todos estos directorios disponen diferentes propósitos:

  • Carpetas que terminan en bin son de uso general, carpetas que terminan en sbin están destinados a los comandos de administración del sistema, cosas que ejecuta el sistema pero con las que probablemente no interactúe mucho. Aún cuando hay
  • /bin y /sbin están destinados a programas que el sistema necesita antes /usr está habilitada. Aquí es donde programas clave como sh y ls se almacenan.
  • /usr/bin y /usr/sbin son para programas de usuario normales, de forma general integrados en el sistema operativo.
  • /usr/local/bin y /usr/local/sbin son para programas que ha descargado o compilado usted mismo. Si tiene un binario que descargó y no sabe dónde ponerlo, tírelo /usr/local/bin.

/usr/local/sbin puede que ni siquiera exista en su sistema, dado que es de naturaleza bastante contradictoria. No está presente en macOS, pero contiene algunos programas en Ubuntu.

Puede ver en qué carpetas se encuentran los diferentes comandos con el which mando:

which ls

Lo que imprimirá la ruta completa que conduce al comando dado.

Cómo agregar carpetas a la RUTA

Agregar una carpeta a la RUTA es simple, solo tiene que configurar la variable. Pero no puede sobrescribirlo por completo, por lo que agrega una carpeta al frente de la RUTA:

PATH=~/folder:$PATH

Además puede pegar la carpeta en la parte posterior de la RUTA:

PATH=$PATH:~/folder

Estos disponen diferentes usos. Las carpetas cercanas al frente se verificarán primero, por lo que si hay comandos duplicados (a modo de ejemplo, dos versiones de Python, ambas llamadas «python“) Agregar la carpeta al frente asegurará que la carpeta que agregó manualmente se verificará primero. La mayoría de las veces, esto es probablemente lo que desea.

Por lo general, definirá esto en el perfil de su shell, que establecerá la variable cada vez que abra una nueva terminal. Si está usando bash, esto es .bash_profile o .bashrc. Si está usando un shell como zsh, este será un archivo distinto (.zshrc para este caso). Si ya existe una definición, simplemente puede agregar su carpeta al principio de la lista, separada por dos puntos.

Considere el uso de links simbólicos

En lugar de agregar una carpeta de forma directa, puede utilizar un link simbólico a comandos específicos y colocar el link simbólico en/usr/local/bin. A modo de ejemplo, Python se instala en su propia carpeta, pero en lugar de agregar esa carpeta a la RUTA, utiliza un link simbólico. Puede ver dónde conducen los links simbólicos con ls -la:

ls -la $(which python)

Y puedes crear links simbólicos con ln:

ln -s command /usr/local/bin/command

El CAMINO puede cambiar

Dado que la variable PATH de forma general se establece en .bashrc, su PATH puede ser distinto cuando se ejecuta en un entorno distinto. Esto es concretamente relevante si está ejecutando dentro de un script bash, o si está ejecutando un comando a través de cron. si tiene dificultades de «comando no encontrado», querrá volver a verificar que la RUTA esté configurada correctamente en el entorno en el que se está ejecutando.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.