12.1. Variables de entorno

Cada proceso tiene asociado a él un entorno. Un entorno es un conjunto de variables de entorno. Una variable es un valor que puede ser cambiado, al que se asigna un nombre fijo. Por ejemplo, el nombre EMAIL podría referirse al valor pepe@ningunsitio.com. El valor puede cambiar; EMAIL podría referirse también a juana@algunsitio.com.

Debido a que el intérprete es un proceso como cualquier otro, tiene un entorno. Puede ver el entorno escribiendo la orden printenv.



Figura 12.1: Ejemplo de printenv


     PAGER=less

     HOSTNAME=icon

     MAILCHECK=60

     PS1=$

     USER=username

     MACHTYPE=i486-pc-linux-gnu

     EDITOR=emacs

     DISPLAY=:0.0

     LOGNAME=username

     SHELL=/bin/bash

     HOSTTYPE=i486

     OSTYPE=linux-gnu

     HISTSIZE=150

     HOME=/home/username

     TERM=xterm-debian

     TEXEDIT=jed

     PATH=/usr/sbin:/usr/sbin:/usr/local/bin:

     /usr/bin:/bin:/usr/bin/X11:/usr/games

     _=/usr/bin/printenv

La figura 12.1 de la página 283 contiene la salida que produce printenv. En su sistema, esta salida será diferente, pero similar.

Las variables de entorno son una manera de configurar el sistema. Por ejemplo, la variable EDITOR le permite elegir su editor preferido para enviar noticias (news), escribir correo electrónico, etc.

Establecer variables de entorno es sencillo. Para adquirir un poco de práctica, debería intentar configurar a su gusto las variables del símbolo de la línea de órdenes (prompt) y del editor de texto. Primero, vamos a leer un poco de información de trasfondo.


     man less
Esta orden le permite leer el manual en línea de la orden less. Para poder mostrarle el texto pantalla por pantalla, man invoca a un paginador que le muestra una página nueva cada vez que pulsa la barra espaciadora. Por defecto, utiliza el paginador llamado more.

Eche un vistazo a la página del manual de less, que es un paginador mejorado. Desplácese a una nueva página pulsando la barra espaciadora; pulse q para salir. more terminará automáticamente cuando llegue al final de la página del manual.


     export PAGER=less
Después de leer las ventajas de less, puede que desee utilizarlo para leer páginas de manual. Para hacerla, asigne la variable de entorno PAGER.

La orden para establecer una variable de entorno dentro de bash siempre tiene este formato:


     export NOMBRE=valor
export indica que saque (exporte) la variable del intérprete, y la ponga en el entorno. Esto quiere decir que otros programas aparte del intérprete (por ejemplo, un visor de ficheros), serán capaces de acceder a ella.


     echo $PAGER
Esta es la manera más sencilla de comprobar el valor de una variable. $PAGER le dice al intérprete que debe insertar en ese lugar el valor de la variable PAGER antes de invocar la orden. echo «hace eco», es decir, muestra, sus argumentos: en este caso, muestra el valor actual para la variable PAGER, less.


     man more
Muestra la página de manual de more. Ahora, man debería haber invocado el paginador less.

less tiene muchas características de las que carece more. Por ejemplo, podrá desplazarse hacia atrás con la tecla b. También puede moverse arriba y abajo (incluso hacia los lados) con las teclas del cursor (las que tienen flechas). less no acabará cuando llegue al final de la página; esperará a que pulse q.

Pruebe algunas órdenes específicas de less, como b, para verificar que no funcionan con more y distinguir por tanto si está utilizando more.


     unset PAGER
Si no desea seguir especificando un paginador más tiempo, puede desasignar (unset) la variable. man usará de nuevo more por defecto, al igual que hacía antes de asignar la variable.


     echo $PAGER
Como ha desasignado PAGER, echo no mostrará nada.


     PS1=hola:


Figura 12.2: Cambio de “prompt”


$ echo $PS1

$

$ PS1=hola:

hola:echo Mi símbolo es $PS1

Mi símbolo es hola:

hello:

Cambie su símbolo de espera (prompt), por simple diversión. $ debería cambiar; vea la figura 12.2 para más detalles.

export no es necesario, ya que está variando el comportamiento del propio intérprete. No hay razón para exportar la variable al entorno para que otros programas lo vean. Técnicamente, PS1 es una variable de intérprete, en lugar de una variable de entorno.

Si lo desea, puede exportar la variable, transformándola en variable de entorno. Si lo hace, los programas ejecutados con el intérprete podrán verla.