3.4.- Variables principales

Vamos a ver las variables definidas al conectar el equipo. Algunas pueden ser definidas posteriormente.

HOME

Esta variable contiene el valor del directorio de inicio del usuario, no debe ser modificada.

PATH

Esta variable contiene una lista de directorios que el shell explora cuando se le invoca con un comando externo.

El comando date lo reconoce…

… porque se encuentra su directorio en la variable PATH

…efectivamente se encuentra en el directorio /usr/bin/date.

Vamos a ver en qué directorio se encuentra el comando ping.

Vemos que el comando ping está en el directorio /usr/sbin/ping. Si el directorio no está citado en el PATH entonces no se citará.

Podemos modificar el contenido de la variable PATH:

Ahora podemos ejecutar los programas que esten en el nuevo directorio creado.

Buscar un comando en el directorio actual

Para que un comando se busque en el directorio actual, hay que añadir al final de la variable PATH la cadena “:.” o simplemente el carácter “:“.

Ejemplo

Que equivale a:

PWD

Esta variable contiene el valor del directorio actual. Cada vez que el usuario cambia de directorio el shell se encarga de actualizarla. Esta variable puede usarse en el shell ksh para que nos muestre el valor del directorio actual en el prompt.

PS1

Esta variable contiene la cadena de caracteres que representan el prompt principal.

En ksh y en bash, es posible configurar el prompt de tal forma que contenga permanentemente el valor del directorio actual.

Mostrar el directorio actual en el prompt en el shell ksh.

Para esta tarea usamos el comando PWD.

Ejemplo

Vemos a continuación, que el prompt se compone de dos caracteres: el símbolo $, y un espacio vacio que hace de separador.

Inicialización de PS1 con el directorio actual (1).

El directorio actual es /home/wordpress:

 Veamos ahora la inicialización de PS1 con la cadena de caracteres ‘$PWD$⎵’; es necesario impedir que el shell substituya $PWD por su valor, por lo tanto hay que proteger la expresión con comillas:

Inicialización de PS1 con el directorio actual (2).

El shell debe mostrar ahora su prompt.  Va a buscar el valor de PS1 (‘$PWD$⎵’). Como PS1 contiene el símbolo “$“, el shell evalúa la expresión y la reemplaza por el valor de PWD (actualmente /home/wordpress):

El shell actualiza inmediatamente la variable PWD que ahora vale “/home/wordpress/Ejemplos“. Después tiene que mostrar su prompt. Vuelve a buscar el valor de PS1 (‘$PWD$⎵’) evaluándolo. Por lo tanto, PS1 tiene por valor “/home/wordpress/Ejemplos“.

Inicialización de PS1 con el directorio actual (3).

 Mostrar el directorio actual en el prompt en bash

Podemos emplear la técnica anterior para colocar secuencias de escape que poseen un significado particular que resulta práctico utilizarlas para inicializar PS1.

Ejemplo

Podemos modificar el prompt de tal manera que aparezca el nombre de la máquina seguida del directorio actual:

PS2

Esta variable contiene la cadena de caracteres que representan el prompt secundario. Este aparece cuando los elementos de la sintaxis shell están incompletos.

Ejemplo 1

Ejemplo 2

Mientras que el shell no encuentre de nuevo la etiqueta %, espera la continuación del mensaje.

Resumiendo; podemos configurar un prompt elaborado y vistoso, tanto para la variable PS1

Configuración personalizada de la variable PS1.

…como para la variable PS2.

Configuración personalizada de la variable PS2.

TMOUT

Esta variable contiene una espera expresada en segundos. Si alguna interacción con el teclado no ha tenido lugar durante este tiempo, el shell finaliza. Cuando su valor es 0, el contador está desactivado.

TERM

Esta variable está en correctamente inicializada en el inicio. Contiene el tipo de terminal del usuario. Los valores más comunes son: ansi, vt100, vt200, dtterm, xterm.

Y podemos localizarlo en el/los directorio/s (datos de Ubuntu 16.04):

LOGNAME

Esta variable contiene el nombre del usuario conectado.

No todas las variables de entorno son utilizadas por los mismos procesos. Se puede distinguir tres categorías de variables:

  • las que utilizan únicamente el shell (PS1, PS2);
  • las que se utilizan por múltiples comandos y eventualmente por el shell (PATH, TERM);
  • las que se utilizan por un comando determinado (EXINIT usado por vi.