¿En qué directorios se encuentran los ficheros ejecutables?

Cuando ejecutamos un comando en nuestra terminal sin indicar la ruta, es decir, no es un script que hayamos hecho nosotros o hayamos descargado y lo ejecutemos con:

./script.sh

sino que es un comando que ejecutamos únicamente escribiendo su nombre, como es el caso de los comandos del sistema y otros comandos que ejecutemos de la manera:

comando

es que se encuentra en uno de los directorios habilitados para tal efecto. Es decir, en uno de los directorios del path de ejecución. Para saber cuáles son esos directorios, lo podemos saber con:

echo $PATH

que nos devolverá algo como:

/home/usuario/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Por lo que, si queremos dejar de escribir la ruta completa de un script que hayamos creado nosotros y queramos que se pueda invocar simplemente escribiendo su nombre desde cualquier punto del sistema, podemos copiar el ejecutable a cualquiera de esos directorios. Mejor si lo copiamos al que se encuentra en nuestra home.

También puede interesarnos modificar esas rutas, añadiendo nuevos directorios. Unas veces nos interesará cambiarlo sólo mientras dure esa sesión y que cuando apaguemos el sistema ese cambio no tenga efecto permanente, que lo haremos con:

export PATH=$PATH:/nueva/ruta

Pero otras veces querremos que ese cambio sea permanente y se mantenga cuando volvamos a arrancar el sistema. Eso lo haremos editando uno de estos ficheros:

  • /etc/profile
  • ~/.bash_profile
  • ~/.bash_login
  • ~/.profile
  • ~/.bashrc

/etc/profile es una configuración general para todos los usuarios mientras que los otros son específicos del usuario.

Depende de la distribución y la configuración que tengamos, la variable PATH estará en uno u otro fichero, por lo que buscaremos el fichero en el que está. Lo podemos hacer con:

grep PATH ~/.*

Y en el fichero en el que se encuentre, añadir los directorios que queramos que sus ejecutables se puedan invocar desde cualquier punto del sistema.

Ejemplo práctico

Supongamos que hemos creado un directorio en nuestra home en el que guardamos los scripts que vamos haciendo. Y que ese directorio se llama ~/scripts.

Comprobamos cuál es el fichero de configuración en el que están las rutas de PATH y nos dice que en nuestro sistema se encuentran en ~/.profile.

Y queremos que todos los ejecutables del directorio ~/scripts los podamos ejecutar desde cualquier punto del sistema sin tener que escribir la ruta.

Lo que podemos hacer es editar ~/.profile y añadir la ruta directamente:

PATH="$HOME/bin:$PATH"

 

O, mejor aún, seguir con el formato de estos ficheros de configuración y escribir:

if [ -d "$HOME/scripts" ] ; then
    PATH="$HOME/scripts:$PATH"
fi

De esta forma, podremos ejecutar cualquiera de los scripts que tengamos en ese directorio con permisos de ejecución simplemente escribiendo su nombre.

Resumen
Puntuación añadida
5 based on 1 votes