10. ¿QUÉ ES EL PATH?

PATH es una variable de entorno que contiene una lista de directorios separados por dos puntos. Cuando escribes un comando como ls, el shell recorre esos directorios en orden buscando un ejecutable llamado “ls”. Si lo encuentra, lo ejecuta. Si no lo encuentra, error.

Puedes verlo así:

echo "$PATH"

Ejemplo típico de salida:

/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/alumno/.local/bin

El orden importa: el shell mira primero el primer directorio, luego el siguiente, y así.

CREAR UN SCRIPT

#!/bin/bash
echo "Hola desde el sistema, $(whoami)!"

Guardar como saludo.sh.

–––––––

ELEGIR DÓNDE VIVIRÁ
Aquí hay dos caminos:

A — Sólo para el usuario
Usar ~/.local/bin (en muchas distros modernas este ya está en PATH).

Si no existe:

mkdir -p ~/.local/bin

Luego mover el script ahí:

mv saludo.sh ~/.local/bin/

B — Para todo el sistema (requiere sudo)
Usar /usr/local/bin:

sudo mv saludo.sh /usr/local/bin/

Esto hace que el script esté disponible para todos los usuarios

–––––––

PERMISOS
El script debe tener el bit de ejecución activo. Si no:

chmod +x ~/.local/bin/saludo.sh

o si está en /usr/local/bin:

sudo chmod +x /usr/local/bin/saludo.sh

–––––––

VERIFICAR SI EL DIRECTORIO YA ESTÁ EN EL PATH
Para el caso ~/.local/bin, muchas distros lo incluyen. Comprobar con:

echo "$PATH" | tr ':' '\n'

Si se ve ~/.local/bin, listo.

Si NO está, hay que añadirlo en ~/.bashrc o ~/.profile:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Aquí puedes introducir la distinción entre bashrc, profile y shells interactivos / no interactivos, pero sin entrar en guerra santa. A nivel pedagógico basta con que entiendan que esa línea hace persistente la ruta.

–––––––

EJECUTAR DESDE CUALQUIER PARTE
Ve a cualquier carpeta:

cd /tmp
saludo.sh

El script debería ejecutarse como cualquier comando del sistema. Si alguien intenta poner ./saludo.sh, puedes remarcar que ahora no hace falta, porque no necesita ruta explícita.

–––––––

OPCIONAL — QUITAR LA EXTENSIÓN
Para que se sienta más “comando real”, renombrarlo:

mv ~/.local/bin/saludo.sh ~/.local/bin/saludo

Y ejecutarlo simplemente como:

saludo

La extensión .sh es cultural, no obligatoria, y que comandos del sistema no suelen llevar extensión.