¿Cómo funciona PATH en Bash?

How Does Path Work Bash



Cuando está escribiendo un comando en la terminal de Linux, generalmente está llamando a un programa para hacer un determinado trabajo, por ejemplo, ls , cd , rm , mkdir , etc. Todos estos programas se encuentran en algún lugar del sistema de archivos, ¿verdad? ¿Cómo sabe bash dónde están estos programas?

Aquí entran en juego las variables de entorno, especialmente la variable PATH. Esta variable es responsable de decirle a bash dónde buscar esos programas. Veamos cómo funciona PATH y cómo ver / modificar PATH.







Variable de entorno y $ PATH

En la terminología de shell, el entorno es un área que el shell construye cada vez que inicia una sesión. Para gestionar el entorno, existen variables de entorno que denotan diferentes partes del entorno. El valor de la variable puede ser cadena, ubicación de directorio, valor u otros.



PATH es una variable de entorno que realiza un seguimiento de ciertos directorios. De forma predeterminada, la variable PATH contiene las siguientes ubicaciones.



  • / usr / bin
  • / usr / sbin
  • / usr / local / bin
  • / usr / local / sbin
  • /soy
  • / sbin
  • / snap / bin (si Snap está instalado)

¿Quiere ver qué directorios están registrados actualmente en PATH? Encienda una terminal y ejecute el siguiente comando.





$echo $ RUTA

Aquí, el signo $ es para denotar una variable. los echo El comando imprime el valor de la variable PATH.



Ahora bien, ¿por qué esta variable de entorno específica es tan importante? Es porque la forma en que Shell y el sistema en su conjunto lo tratan. La variable PATH almacena dónde se pueden encontrar los ejecutables. Siempre que se ejecuta cualquier comando, el shell busca en los directorios PATH el archivo ejecutable de destino y lo ejecuta.

Por ejemplo, probemos con el echo mando. Aquí, estoy ejecutando un comando de eco.

$echoHola Mundo!

¿Dónde está el archivo ejecutable de echo ? Ejecute el siguiente comando para averiguarlo.

$cuales echo

Como podemos ver, el echo ejecutable se encuentra en / usr / bin / echo. ¿Dónde está cuál ubicado? Vamos a averiguar.

$cuales cuales

También se encuentra en / usr / bin / which. La mayoría de las herramientas de comando se encuentran en el directorio / usr / bin. Aquí, bash está consultando PATH para conocer las ubicaciones para buscar los ejecutables de un comando.

Modificando PATH

Antes de modificar el valor de PATH, es importante comprender su estructura. Ejecute el comando nuevamente para verificar el valor de PATH.

$echo $ RUTA

Observe que cada uno de los directorios está separado por un signo:.

Agregar directorio a PATH

Para agregar un directorio personalizado a PATH, usaremos la ayuda del archivo bashrc. Es un script de bash especial que se carga cada vez que se inicia una nueva sesión de bash. Tenga en cuenta que el archivo bashrc es único para cada usuario del sistema Linux.

Abra el archivo bashrc en un editor de texto. Si el archivo bashrc aún no está presente, el editor lo creará automáticamente.

$yo vine~/.bashrc

Aquí, es el bashrc predeterminado que viene con Ubuntu. Vaya al último del archivo (si existe) y agregue la siguiente línea.

$exportar SENDERO='$ RUTA:/'

Aquí, el nuevo valor de la variable PATH será la variable anterior junto con el nuevo directorio que acabamos de agregar.

Guarde el archivo y dígale a bash que lo vuelva a cargar.

$fuente~/.bashrc

Verifiquemos si la nueva ruta se agregó correctamente.

$echo $ RUTA

¡Voila! ¡RUTA actualizada con éxito! Ahora, bash también buscará ejecutables en la nueva ruta. Ya tengo un guion demo.sh en el escritorio. Veamos si bash puede llamarlo sin especificar la ubicación exacta.

$demo.sh

Sí, bash puede llamarlo directamente sin ningún problema.

Eliminando directorio de PATH

No existe una forma sencilla de agregar / eliminar directorios de PATH. Dejame explicar.

El valor de PATH es realmente fijo. Entonces, ¿qué pasa con el truco bashrc? Bashrc es un script bash que carga bash cada vez que inicia una sesión. En bashrc, acabamos de declarar que el nuevo valor de PATH será su valor predeterminado y el directorio definido por el usuario. Ahora, cada vez que se carga bash, ve que bashrc le dice que asigne un nuevo valor de PATH y eso es lo que hace.

De manera similar, si queremos eliminar un directorio de PATH, tenemos que reasignar un valor diferente de PATH en bashrc para que cada vez que se inicie bash, use el valor modificado.

Echemos un vistazo a este ejemplo. Estoy dispuesto a eliminar el directorio ~ / Desktop de la RUTA.

$echo $ RUTA | sed -Y 's /: ~ / Escritorio $ //'

Si el directorio fuera / home / wrong / dir, el comando se vería así.

$echo $ RUTA | sed -Y 's /: / inicio / incorrecto / dir $ //'

Aquí, la parte interesante es la herramienta sed. Más información sobre sed aquí y aquí . Para resumir, usando sed, estamos modificando la salida del echo mando. Ahora, podemos usar esta salida modificada para cambiar el valor de PATH.

Abra bashrc en un editor de texto y agregue las siguientes líneas. Intencionalmente mantengo las líneas anteriores para demostrar que está funcionando.

$exportar SENDERO='$ (echo $ PATH | sed -e 's /: ~ / Escritorio $ //')'

Alternativamente, también puede establecer manualmente el valor de PATH. Es un proceso laborioso pero más sencillo y directo.

$exportar SENDERO=/usr/local/sbin:/usr/local/soy:/usr/sbin:/usr/soy:/sbin:/soy:
/usr/juegos:/usr/local/juegos:/quebrar/soy

Aquí, el valor del comando se asignará a PATH. Guarde el archivo y vuelva a cargar bashrc.

$fuente~/.bashrc

Verifiquemos el resultado.

$echo $ RUTA

¡El valor PATH se actualiza!

Pensamientos finales

En bash, la variable PATH es importante. Cualquier programa que se ejecute a través de la sesión bash hereda la variable, por lo que es importante que PATH incluya solo los directorios necesarios. Agregar más directorio solo agregará redundancia al sistema.

Para ver todas las variables de entorno para bash, ejecute este comando. La primera parte del comando devolverá todas las variables de entorno y la segunda parte ordenará la salida en orden ascendente.

$env | clasificar

¿Quieres darle vida a tu experiencia de bash? Los alias de Bash ofrecen una forma única de acelerar y animar las cosas. Más información sobre los alias de bash .

¡Disfrutar!