Las variables de entorno y de shell en Linux (II)

En el post Las variables de entorno y de shell en Linux (I) hablamos de las diferencias entre las variables de entorno y cómo definir y visualizar cada una de ellas.

En esta ocasión vamos a ver un pequeño listado de las que me resultan más útiles e interesantes de saber.

HOME

La variable HOME es la que define el directorio personal del usuario. No es recomendable su modificación, puesto que puede causar problemas a la hora de ejecutar ciertas aplicaciones.

PATH

La variable PATH es posiblemente de las variables más importantes que listaremos. Cada vez que ejecutamos algún comando, la shell buscará el ejecutable en todas las rutas definidas en PATH. Si deseamos añadir más rutas, usaremos como separador el símbolo de los dos puntos :

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Para comprobar la ruta donde está el ejecutable del comando introducido, si es que existe, utilizaremos which del siguiente modo:

$ which vim
/usr/bin/vim

Como podemos ver, vim se encuentra en uno de los directorios listados en PATH.

Como detalle adicional, si queremos que además de buscar el ejecutable en los directorios definidos explícitamente en la variable queremos que nos busque en el directorio actual, podemos finalizar la definición de la variable por :. o :. Es decir:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:.

O bien:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:

Ambos métodos son equivalentes.

PWD

La variable PWD es la variable encargada de definir la ruta de trabajo actual, es decir, que cada vez que hacemos un cd, el contenido de la variable cambia. Podemos verlo a continuación:

$ cd /
$ echo $PWD
/
$ cd /var/opt
$ echo $PWD
/var/opt
$ 

PS1

La variable PS1 contiene la cadena de nuestro promt. Podemos hacer que sea una simple cadena de texto, o por el contrario que sea más “dinámica” y nos aporte información, como por ejemplo la fecha/hora, el directorio actual, el usuario actual… También puede personalizarse con colores.

Podemos ver todas estas opciones si leemos el manual de bash con man bash en la sección PROMTING.

Ejemplo de PS1 de cadena de texto simple:

$ echo $PS1 #Visualizamos el promt actual, que es $
$
$ PS1="Esto es el promt> " #Modificamos el promt
Esto es el promt> pwd
/var
Esto es el promt> cd /
Esto es el promt> 

Ejemplo de PS1 con hora, host y directorio:

Esto es el promt> PS1="\t \h \w > "
18:58:37 nombreHost / > cd /var
18:58:41 nombreHost /var > pwd
/var

Nota: Si realizamos una rápida búsqueda en Google, podremos encontrar generadores de strings PS1.

PS2

Veremos ahora el PS2, el cual contiene el caracter o caracteres que se mostrarán cuando la sintaxis que estemos introduciendo no está completa.

Con el valor >:

$ echo $PS2
>
$ echo "Prueba
> ha faltado el cierre de comillas"
Prueba
ha faltado el cierre de comillas
$ 

Con el valor @:

$ echo $PS2
@
$ echo "Prueba
@ ha faltado el cierre de comillas"
Prueba
ha faltado el cierre de comillas
$ 

TMOUT

Variable interesante si tenemos un servidor en el que se quedan sesiones SSH abiertas de manera habitual, o simplemente por seguridad. Con TMOUT tenemos la posibilidad de establecer el tiempo que dura una sesión abierta en segundos sin que se produzca ninguna interacción de teclado. Cuando la variable vale 0, nos indica que la sesión no tiene límite de tiempo.

RANDOM

Cada vez que comprobemos el contenido de RANDOM tendremos un valor diferente. Util para por ejemplo realizar scripts.

$ echo $RANDOM
129
$ echo $RANDOM
8365
$ echo $RANDOM
32108
$ echo $RANDOM
4104
$ echo $RANDOM
18927

USER

En USER se almacena el usuario de la shell actual.

HOSTNAME

En HOSTNAME se almacena el nombre de la máquina actual.