Tutoriel Linux

PATH en Linux: cómo agregar un comando sin interrumpir la shell

Débutant6 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Acabas de instalar una herramienta de Linux, escribes su comando y el shell responde. comando no encontradoEn muchos casos, la herramienta sí está presente. Simplemente se almacena en una carpeta que su variable CAMINO no viaja.

Te aconsejo que manejes esto correctamente. Agregar una carpeta a la variable PATH puede solucionar las cosas en treinta segundos, pero una línea incorrecta en .bashrcUna carpeta sospechosa colocada en la parte superior, o una ruta de acceso duplicada cada vez que se abre la terminal, puede hacer que la sesión resulte rápidamente desagradable.

Veremos cómo leer su PATH, probar una adición temporal y hacerla permanente con .bashrc O .perfilLuego, verifique que se esté ejecutando el comando correcto.

Tux agrega una carpeta segura al PATH de Linux con un servidor y un árbol de comandos.
Antes de agregar una carpeta a la variable PATH, compruebe siempre qué ejecutable llamará el intérprete de comandos.

Comience por observar la ruta actual.

La variable PATH es una lista de carpetas separadas por dos puntos. Al escribir un comando, el intérprete de comandos busca en estas carpetas, en orden.

echo "$RUTA"

La salida suele ser larga. Para leerla más fácilmente, muestre una carpeta por línea:

OLDIFS=$IFS
SI=:
para cada directorio en $PATH; hacer
  echo "$dir"
hecho
Si es igual a $SiEsAntiguo

En un ordenador estándar, encontrará carpetas como /usr/local/bin, /usr/bin, /papelera, A veces $INICIO/.local/binSi la carpeta que contiene su script no aparece, el intérprete de comandos no la encontrará sin la ruta completa.

Antes de realizar cualquier cambio, compruebe también dónde se encuentra el comando:

comando -v miherramienta
escriba -a miherramienta

comando -v Indica la ruta realmente utilizada. escriba -a Esto resulta útil cuando varios comandos tienen el mismo nombre. Es precisamente el tipo de comprobación que evita que ejecutes sin darte cuenta un binario antiguo.

Agregue una carpeta a la variable PATH solo para la sesión.

Para probar sin romper nada, primero agregue la carpeta solo al terminal actual. Por ejemplo, si coloca sus pequeños scripts en ~/.local/bin :

mkdir -p "$HOME/.local/bin"
exportar RUTA="$HOME/.local/bin:$RUTA"

La carpeta se encuentra al principio de la variable PATH. Por lo tanto, su intérprete de comandos la consultará antes. /usr/bin O /papeleraEsto resulta útil para probar un script personal, pero no es un detalle neutral: si un comando tiene el mismo nombre que una herramienta del sistema, se ejecutará tu versión.

Compruébalo ahora mismo:

echo "$RUTA"
comando -v miherramienta

Si tu script está en esta carpeta pero no se ejecuta, comprueba también los permisos de ejecución:

ls -l "$HOME/.local/bin/mytool"
chmod +x "$HOME/.local/bin/mytool"

Si necesita revisar los permisos de varios archivos, consulte el artículo sobre chmod recursivo en Linux Esto puede evitar que utilices un comando demasiado amplio. En este caso, simplemente otorgamos permisos de ejecución al archivo en cuestión.

Haz que la adición sea persistente en .bashrc

Si la prueba funciona, puede hacer que la adición sea permanente. Para una terminal Bash interactiva, el archivo más común es ~/.bashrc.

nano ~/.bashrc

Agregue esta lógica al final del archivo:

caso ":$PATH:" en
  *":$HOME/.local/bin:"*) ;;
  *) exportar PATH="$HOME/.local/bin:$PATH" ;;
esac

Esta versión evita volver a inyectar la misma carpeta con cada carga. Es más limpia que una simple exportar RUTA="$HOME/.local/bin:$RUTA" repetido en varios archivos.

Luego, vuelva a cargar el archivo sin cerrar la sesión:

fuente ~/.bashrc

Abra también una nueva terminal para confirmar que la adición se está realizando automáticamente:

OLDIFS=$IFS
SI=:
para cada directorio en $PATH; hacer
  echo "$dir"
hecho
Si es igual a $SiEsAntiguo
comando -v miherramienta

.bashrc, .profile o /etc/profile.d: ¿cuál elegir?

El archivo correcto depende de su caso de uso. En una estación de trabajo o servidor donde principalmente abre shells Bash interactivos, ~/.bashrc suele ser suficiente.

Para una sesión de inicio de sesión, especialmente cuando se desea que la variable esté más ampliamente disponible después del inicio de sesión, consulte en su lugar: ~/.perfilAlgunas distribuciones ya incorporan esto. $HOME/bin O $INICIO/.local/bin si el archivo existe.

Para una configuración del sistema destinada a todos los usuarios, evite acumular cambios en cada cuenta. En su lugar, utilice un archivo dedicado en /etc/profile.d/con atención:

sudo nano /etc/profile.d/local-tools.sh

Ejemplo sencillo para un archivo administrado:

exportar PATH="/opt/tools/bin:$PATH"

Reservo este tipo de adición para rutas controladas con permisos específicos. Si cualquier usuario puede escribir en la carpeta, no debería estar en la parte superior de la variable PATH global. La documentación de Bash enumera las variables utilizadas por el intérprete de comandos y la página PATH del manual de Bash recuerda el papel de esta variable.

Evite los caminos peligrosos al comienzo del SENDERO

El error clásico es agregar una carpeta útil pero demasiado amplia. Por ejemplo, poner . En la variable PATH, es posible ejecutar un comando desde el directorio actual sin escribir ./guionLo desaconsejo.

Imagina una carpeta de descargas que contiene un archivo falso. es, ssh O sudoSi el directorio actual tiene prioridad sobre las rutas del sistema, podrías ejecutar el programa equivocado sin darte cuenta. En un servidor, esto es un mal hábito que conviene evitar.

Unas pocas reglas sencillas:

  • no pongas . en el CAMINO;
  • Evite las carpetas donde otros usuarios puedan escribir;
  • coloque los guiones personales en $INICIO/.local/bin en lugar de en una carpeta de descargas;
  • consultar con escriba -a si existe un pedido en varios lugares;
  • Mantenga las rutas del sistema clásico en la variable PATH.

la pagina aproximadamente(7) También detalla la función de las variables de entorno en Linux. Si bien no es una lectura esencial para agregar un script personal, ayuda a comprender qué información se pasa a los procesos.

Verifica que el intérprete de comandos esté utilizando el comando correcto.

Tras realizar la modificación, no se limite a comprobar que el comando se ejecuta. Verifique su ruta exacta:

comando -v miherramienta
escriba -a miherramienta

Si acaba de mover o reemplazar un comando, Bash también puede mantener una versión en caché de la ruta anterior. En este caso:

hash -r
comando -v miherramienta

A continuación, puede ejecutar un comando de versión o de ayuda, si la herramienta lo ofrece:

montool --versión
miherramienta --ayuda

Si buscas el archivo exacto antes de decidir dónde almacenarlo, también puedes usar encontrar en LinuxEsto suele ser más limpio que modificar aleatoriamente la variable PATH para compensar un archivo mal ubicado.

Mi propio método para agregar un comando personal

En un ordenador personal o un servidor pequeño, generalmente lo mantengo simple:

  • Coloco mis guiones en $INICIO/.local/bin ;
  • Solo otorgo derechos de ejecución a los archivos necesarios;
  • Agrego la carpeta a ~/.bashrc con una prueba antiduplicación;
  • lo verifico con comando -v Y escriba -a ;
  • Mantengo bajo control las rutas del sistema y las carpetas confidenciales.

Si administras varias cuentas o un servidor compartido, sé más riguroso. Una variable PATH global mal diseñada puede generar comportamientos difíciles de diagnosticar, especialmente cuando un script funciona a través de SSH pero no en una sesión interactiva, o viceversa. En este caso, documenta la ruta agregada y realiza una prueba con un nuevo usuario antes de considerar el cambio válido.

sudo apt update && sudo apt upgrade