Cómo establecer permanentemente $PATH en Linux

En este tutorial, le mostraremos cómo configurar permanentemente su RUTA en Linux. En primer lugar, ¿por qué debería importarte? La variable $PATH, o simplemente PATH, sin el $...

Comprender la variable $PATH

En este tutorial, le mostraremos cómo configurar permanentemente su RUTA en Linux.

En primer lugar, ¿por qué debería importarte?

La variable $PATH, o simplemente PATH, sin las variables indicadoras $, especifica una lista de directorios que afecta la funcionalidad de su plataforma informática de manera crítica. Esto se debe a que $PATH es la lista de directorios en los que el sistema busca programas, scripts o archivos ejecutables.

Imagine intentar ejecutar el comando ssh, por ejemplo, para conectarse a un servidor. ¿Qué sucede si el sistema no puede encontrar el programa ssh? No puede conectarse a servidores y ejecutar cálculos. Tiene una plétora de programas útiles, ejemplos como python, javac, npm, make, chmod, apt-get y demás, que su computadora necesita poder encontrar cuando usted invocarlos en la línea de comando.

La variable $PATH es la clave que hace posible encontrar el programa correcto y ejecutarlo a su orden sin necesitar la ruta completa del directorio del ejecutable. Cuando su RUTA está configurada incorrectamente, su shell no podrá encontrar programas y ciertos comandos fallarán.

Uso de bash_profile para establecer su RUTA

Un error común con la variable $PATH es configurarla solo en el shell actual, sin persistir el cambio. Cuando abre un nuevo shell, los cambios se pierden y una vez más no puede ejecutar ciertos comandos porque esos programas no se encuentran en la RUTA.

La primera forma de configurar su $PATH de forma permanente es modificar la variable $PATH en su archivo de perfil de Bash, ubicado en /home/<usuario>/.bash_profile.

Por ejemplo, digamos que quiero agregar un nuevo directorio /home/tomahawk/tools/jdk1.8.0_92/bin a mi RUTA. Es posible que reconozca esto como una instalación del kit de desarrollo de Java. Sin embargo, eso no viene al caso. Lo que sea que contenga el directorio, puedo agregarlo a nuestra ruta y hacer que los programas que contiene este directorio bin sean accesibles desde la línea de comando agregando la siguiente línea al final del archivo ~/.bash_profile:

1
2
...
export PATH="$PATH:/home/tomahawk/tools/jdk1.8.0_92/bin"

Una buena manera de editar el archivo es usar nano, vi, vim o emacs. Puede usar el comando sudo <editor> ~/.bash_profile e ingresar su contraseña de administrador cuando se le solicite, luego agregue esa línea al final y guarde el archivo.

Para activar los cambios en el shell actual, debe "obtener" el archivo bash_profile actualizado. Haces esto con el comando:

1
$ source ~/.bash_profile

Esto simplemente importa la configuración del archivo en el shell actual. Ahora, cada vez que abra su shell, su bash_profile se "comprará" automáticamente y no necesitará ejecutar este comando cada vez.

Ahora podemos invocar comandos o programas en el nuevo directorio /home/tomahawk/tools/jdk1.8.0_92/bin, como javac, ubicado en /home/tomahawk/tools/jdk1.8.0_92/bin/ javac simplemente escribiendo en el símbolo del sistema el nombre del programa. Podemos hacer esto ahora desde cualquier directorio, porque la RUTA se ha actualizado para buscar programas ejecutables en nuestro nuevo directorio.

El comando:

1
$ javac --version

Ahora ejecuta el programa javac correcto, imprimiendo algo como lo siguiente:

1
Java Compiler, version 1.8.0_92

bash_profile es apropiado cuando desea configurar una variable PATH personalizada para un solo usuario del sistema. Si desea configurar PATH para todos los usuarios de un sistema, existen mejores formas de hacerlo, que trataremos más adelante en esta guía.

Uso de bashrc para establecer su RUTA

En lugar de configurar la RUTA en ~/.bash_profile, también podemos agregar los directorios que queremos a la RUTA en ~/.bashrc. Establecer la RUTA en bashrc se ve idéntico a cómo lo configuramos en bash_profile.

Por ejemplo, para incluir el directorio /home/tomahawk/.rbenv/bin en mi ruta, edito o creo el archivo /home/tomahawk/.bashrc, agregando la siguiente línea:

1
2
...
export PATH="$PATH:/home/tomahawk/.rbenv/bin"

Tenga en cuenta que, como la última vez, lo primero en nuestra nueva exportación PATH es la inclusión de la variable existente $PATH. Esto asegura que preservamos el valor actual de PATH, y simplemente agregamos cualquier directorio adicional a PATH, después de la variable $PATH. Si no hace esto, sobrescribirá la variable PATH por completo y perderá los directorios críticos que el sistema necesita para estar en la RUTA. Como resultado, su sistema puede volverse inutilizable.

La diferencia entre usar bashrc y bash_profile es que bash_profile se usa para shells de inicio de sesión. Estos se ejecutan cuando inicia sesión a través de la consola o inicia sesión usando ssh. Por el contrario, una vez que haya iniciado sesión y abra un shell de comandos o ejecute el comando bash, se ejecutará el archivo bashrc. Su configuración de PATH de bashrc estará disponible.

El efecto de establecer la RUTA es similar. Además, debemos activar cualquier cambio en el archivo bashrc en el shell actual la primera vez que hacemos este cambio, tal como lo hicimos para el archivo bash_profile. Esta vez, ejecutamos source ~/.bashrc. Ahora podemos acceder a la nueva RUTA en la línea de comando. Se ha configurado de forma permanente y permanecerá igual entre múltiples inicios de sesión en el sistema.

Usando un archivo de perfil para establecer su RUTA

También podemos establecer la RUTA de forma permanente utilizando el archivo de perfil de un usuario. Esto es diferente de ~/.bash_profile en que no está configurado solo para shells, sino para todos los programas.

Los perfiles de usuario se cargan al iniciar sesión. La variable PATH se puede establecer en el archivo ~/.profile.

Para configurar mi RUTA para incluir todo lo que ya está en $PATH, así como un nuevo directorio /home/tomahawk/.exenv/bin, edito el archivo en ~/.profile y configuro la RUTA de la siguiente manera

1
export PATH="$PATH:/home/tomahawk/.exenv/bin"

Como en todos los ejemplos anteriores, necesitaremos generar estos cambios para que estén activos para el shell actual, pero los inicios de sesión posteriores mantendrán los cambios.

Una vez hecho esto, puedo ejecutar el comando exenv, que es uno de los programas disponibles en la carpeta que acabo de agregar a la RUTA, y obtengo el resultado de mi versión exenv:

1
2
$ exenv version
1.3.4 (set by /home/tomahawk/.exenv/version)

Puede leer más sobre el programa exenv aquí, pero puede usar este proceso para configurar PATH permanentemente para incluir cualquier programa o directorio que desee.

Configuración permanente de su PATH para otros shells como ZSH y KSH

Si usa shells alternativos como zsh, ksh y otros, puede establecer la RUTA permanentemente usando la configuración de esos shells.

como bash, ambos zsh y [ksh](https://en.wikipedia.org/wiki/ KornShell) utilizan un archivo zshrc y khsrc, respectivamente, para establecer la ruta para los shells que no son de inicio de sesión. Para los shells de inicio de sesión, utilizan los archivos de perfil de shell análogos zprofile y kprofile.

Por lo tanto, puede establecer la RUTA de forma permanente para estos shells de manera similar a lo que hicimos para Bash. Para zsh, puede encontrar estos archivos, o crearlos si no existen, en ~/.zshrc y ~/.zprofile.

De manera similar, puede configurar PATH permanentemente para ksh en los archivos de configuración ubicados en ~/.kshrc y ~/.kprofile.

Hay muchos otros shells que puedes usar, como Concha C y [tcsh](https://en.wikipedia.org/wiki/ Tcsh) caparazón. Establecer la RUTA permanentemente para ellos generalmente seguirá el patrón que hemos visto aquí.

Configuración permanente de la RUTA de todo el sistema para todos los usuarios

La configuración de todo el sistema para todos los usuarios se puede establecer en /etc/profile. Existe una flexibilidad considerable y múltiples opciones para configurar el PATH de forma permanente en todo el sistema.

Su sistema Linux ejecutará todos los archivos de script que terminen en .sh en /etc/profile.d cada vez que se ingrese un shell bash, así como cuando se carga la sesión de escritorio.

Por lo tanto, puede agregar un nuevo archivo, como env.sh dentro del directorio /etc/profile.d. En este archivo, podemos exportar la variable PATH, estableciéndola permanentemente en nuestra elección de directorios de ruta, por ejemplo:

1
export PATH="$PATH:/home/tomahawk/.rbenv/bin:/home/tomahawk/bin:/home/tomahawk/.local/bin"

Los archivos en /etc/profile.d provienen de /etc/profile, lo que activa nuestra RUTA en todo el sistema cada vez que un usuario inicia sesión.

También podemos configurar PATH para todos los usuarios en /etc/environment, que toma pares clave-valor de la forma:

1
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

Solución de problemas de PATH

Como vimos, establecer la RUTA de forma permanente en Linux tiene muchas opciones. Puede configurar la RUTA solo para un determinado usuario, para todos los usuarios o solo para ciertos tipos de shells de comandos. Sin embargo, es una buena idea no jugar con la configuración de RUTA de todo el sistema a menos que realmente sepa lo que está haciendo.

Si encuentra problemas, un buen punto de partida es averiguar el valor actual de $PATH ejecutando el comando:

1
$ echo $PATH

Para obtener más sugerencias para la resolución de problemas, consulte este recurso.