Skip to content
goddamnhippie edited this page Oct 31, 2011 · 6 revisions

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