PATH
Cuando abres una terminal en realidad estás ejecutando un SHELL. El SHELL se parece en muchos aspectos a un ambiente de programación, donde se pueden establecer variables, ejecutar comandos, evaluar condicionales y loops, etc. Una variable muy importante es $PATH.
La mayoría de ejecutables de tu sistema se encuentran en las rutas /bin
, /sbin
, /usr/bin
y /usr/sbin
. Por convención los ejecutables que tu vas a instalar se ponen en /usr/local/bin
y en /usr/local/sbin
, pero en realidad pueden ir en cualquier parte.
Cuando estés en la terminal siempre considera que puedes llegar a los recursos (archivos, carpetas y ejecutables) mediante su ruta completa o su ruta relativa a tu ubicación en el filesystem. Siempre puedes ejecutar un comando poniendo la ruta completa, por ejemplo /bin/date
o /bin/hostname
. Pero normalmente vas a ejecutar el comando solo, por ejemplo date
o hostname
. Ruby se ejecuta de la misma manera. Pero…
¿Que pasa si tienes dos ejecutables que se llaman igual? ¿Como sabe el sistema cual ejecutar?
Justamente para eso existe la variable $PATH, que establece el orden de búsqueda del comando. Si quieres saber la ruta exacta de un comando, la puedes averiguar con el comando which
. Por ejemplo, ejecuta which cd
y el resultado seguramente será /usr/bin/cd
.
Para modificar la variable, lo que debes hacer es modificar el archivo .bashrc
y .bash_profile
ubicados en tu home folder. Estos archivos se ejecutan cuando abres una terminal. .bash_profile
se ejecuta cada vez que haces login y .bashrc
se ejecuta cada vez que se ejecuta el SHELL bash. Para evitar problemas, lo ideal es que hagas modificaciones de $PATH en .bashrc
y luego modifiques .bash_login
para que ejecute .bashrc
si es que existe.
Puedes editar el archivo con nano que es un editor de texto básico y fácil de usar, y además viene pre-instalador en Ubuntu y Mac OS X. Empieza por .bashrc
de esta manera:
$ nano ~/.bashrc
Este comando va a abrir un editor, con eso agrega esta línea:
export PATH='/usr/local/bin:/usr/local/sbin:$PATH'
Esta línea hace que /usr/local/bin
y /usr/local/sbin
sean buscadas antes que el resto, y así los ejecutables que tu compiles (como nuevas versiones de Ruby) sean ejecutadas antes que las que puedan venir pre-instaladas en el sistema.
Luego tienes que editar .bash_profile
para que ejecute ese código también con nano:
$ nano ~/.bash_profile
En ese archivo debes colocar este código:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi