miércoles, 25 de noviembre de 2015

¿Qué hay en un archivo de arranque?

Si miramos dentro de un archivo .bash_profile típico (tomado de un sistema CentOS 4), vemos algo así:

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin
export PATH

Las líneas que empiezan con un “#” son comentarios y no son leídas por el shell. Son para que sean legibles por personas. La primera cosa interesante ocurre en la cuarta línea, con el siguiente código:

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

Esto se llama un comando if compuesto, que veremos más en profundidad cuando lleguemos al scripting de shell en la Parte 4, pero por ahora lo traduciremos:

Si el archivo "~/.bashrc" existe, entonces
    lee el archivo "~/.bashrc".

Podemos ver que este fragmento de código es la forma en que un shell con login toma los contenidos de .bashrc. Lo siguiente en nuestro archivo de arranque tiene que ver con la variable PATH.

¿Te has preguntado alguna vez, cómo sabe el shell dónde encontrar los comandos cuando los introducimos en la línea de comandos? Por ejemplo, cuando introducimos ls, el shell no busca en todo el ordenador para encontrar /bin/ls (la ruta completa del comando ls), en su lugar, busca en una lista de directorios que están contenidos en la variable PATH.

La variable PATH a menudo (pero no siempre, depende de la distribución) es establecida por el archivo de arranque /etc/profile con este código:

PATH=$PATH:$HOME/bin

PATH se modifica para añadir el directorio $HOME/bin al final de la lista. Esto es un ejemplo de expansión con parámetros, como vimos en el Capítulo 7. Para demostrar como funciona, prueba lo siguiente:

[me@linuxbox ~]$ foo="This is some "
[me@linuxbox ~]$ echo $foo
This is some
[me@linuxbox ~]$ foo=$foo"text."
[me@linuxbox ~]$ echo $foo
This is some text.

Usando esta técnica, podemos añadir texto al final de los contenidos de una variable.

Añadiendo la cadena $HOME/bin al final del contenido de la variable PATH, el directorio $HOME/bin se añade a la lista de directorios a buscar cuando se introduce un comando. Esto significa que cuando queremos crear un directorio dentro de nuestro directorio home para almacenar nuestros programas privados, el shell está preparado para contenerlos. Todo lo que tenemos que hacer es llamarlo bin, y estamos listos para empezar.

Nota: Muchas distribuciones proveen esta configuración de PATH por defecto. Algunas distribuciones basadas en Debian, como Ubuntu, buscan la existencia del directorio ~/bin en el login, y dinámicamente lo añaden a la variable PATH si encuentran el directorio.

Finalmente, tenemos:

export PATH

El comando export le dice al shell que haga que los contenidos de PATH estén disponibles para los procesos hijos de este shell.

No hay comentarios:

Publicar un comentario