Fuente:
Bash Reference ManualPara comenzar es necesario tener una idea general de lo que es el
Bash. Me voy a limitar a copiar la definición de
Wikipedia, sabiendo que existe infinita información disponible en Internet para quienes deseen informarse mejor:
bash es un shell de Unix (intérprete de órdenes de Unix) escrito para el proyecto GNU. Su nombre es un acrónimo de bourne-again shell (otro shell bourne) — haciendo un juego de palabras (born-again significa renacimiento) sobre el Bourne shell (sh), que fue uno de los primeros intérpretes importantes de Unix.
Ahora bien, cuando introducimos un comando en
BASH el sistema busca un archivo con ese nombre en todos los directorios contenidos en la variable
PATH. En caso de no encontrarlo se retorna un mensaje de error especificando que el comando no ha sido encontrado. Para saber los directorios contenidos en
PATH debes escribir en la consola:
echo $PATH
Te retornará algo como esto:
/usr/local/bin:/usr/bin:/bin:/usr/games/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/lib/qt/bin
Cada ruta de directorio aparece separada por dos puntos (:). En caso de que desees agregar directorios a tu
PATH puedes hacerlo de dos formas: La primera los hace válidos por el tiempo que dura tu sesión, la segunda los hace permanentes.
Para el primer caso basta escribir en el terminal:
PATH="$PATH:<ruta nueva1>:<ruta nueva2>:...<ruta nuevaN>"
Supongamos que tenemos un usuario que desea agregar dos carpetas a su
PATH, ambas contenidas en
~/: la carpeta
Scripts y la carpeta
compilados. Tendría que escribir en el terminal:
PATH="$PATH:/home/nombreusuario/Scripts:/home/nombreusuario/compilados"
De esa manera ambos directorios se agregan a su variable
PATH. Sin embargo, estos cambios no son permanentes y la próxima vez que el usuario acceda a su cuenta todas las modificaciones se habrán perdido.
Para que los cambios sean permanentes es necesario editar un par de archivos:
~/.bash_profile y
~/.bashsrc~/.bash_profileEditar este archivo permite especificar una serie de comandos que se ejecutarán en cuanto el usuario acceda a su cuenta. En caso de que el archivo no exista puedes crearlo. Un ejemplo de lo que contiene este archivo es el siguiente:
# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then . ~/.bashrcfi# User specific environment and startup programsBASH_ENV=$HOME/.bashrcUSERNAME=""PATH=$PATH:/usr/local/pgsql/bin:/usr/local/sbin:/usr/sbin:/sbinMANPATH=$MANPATH:/usr/local/pgsql/manPGLIB=/usr/local/pgsql/libPGDATA=/usr/local/pgsql/dataexport USERNAME BASH_ENV PATH MANPATH PGLIB PGDATALos directorios que aparecen asignados a la variable
PATH se sumarán a los directorios básicos que asigna el sistema a todos los usuarios. El archivo
.bash_profile se carga cada vez que el usuario realiza un login a su cuenta. Para decirlo de un modo más específico, cada vez que
Bash es invocado mediante un
login shell interactivo (cuando te logeas con tu password)o mediante un shell no interactivo con la opción
--login, primero lee y ejecuta los comandos desde el archivo
/etc/profile, en caso de que este archivo exista. Luego de leer este archivo busca los archivos
~/.bash_profile,
~/.bash_login y
~/.profile, en ese orden. La idea es que se ejecutarán los comandos del primero de los archivos que sea encontrado y sea legible. Una vez encontrado este archivo no seguirá buscando los demás, por esa razón es que es preferible asegurarse de trabajar con el primer archivo de la lista.
Nota:
~/ se usa para indicar tu directorio home. Si tu usuario es
carlos, por ejemplo,
~/ corresponde a
/home/carlos/Sin embargo, si accedemos a un terminal desde un entorno de escritorio como
Gnome,
KDE o
Xfce, nos encontraremos con que el archivo
.bash_profile no es leído. En ese caso, además, debemos modificar el archivo
.bashrc~/.bashrcCuando se inicia un shell interactivo que no es un login shell, es decir que no requiere que ingreses a tu cuenta con tu clave y nombre de usuario,
Bash lee y ejecuta comandos desde
~/.bashrc, si es que ese archivo existe. Un ejemplo del contenido de este archivo sería el siguiente:
alias ll="ls -al --color"alias nautilus="nautilus --no-desktop"alias aterm="aterm -fg white -tr"export PS1='\u[\W]\$ 'export PAGER="most"export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbinEsta última linea contiene los directorios que se sumarán a los que cada usuario tiene por defecto.
De esta manera, editando ambos archivos es posible modificar tu variable
PATH.
Por supuesto, existe más de un método de hacer todo lo anterior, es cosa de descubrir la forma que prefieras. Se puede, también, modificar los archivos
/etc/profile y
/etc/bashrc que corresponden a los archivos
~/.bash_profile y
~/.bashrc, pero que afectan a todos los usuarios. Evidentemente que para modificarlos necesitarás permisos de superusuario.