Siete variables inesperadas de Bash.

Continuando la serie de notas sobre menos conocidos funciones bash, les mostraré siete variables que tal vez no conocían.

1) PROMPT_COMMAND

Puede que ya sepas cómo manipular el prompt para mostrar información útil, pero no todos saben que cada vez que se muestra el prompt se puede ejecutar un comando de shell.

De hecho, muchos manipuladores complejos del prompt utilizan esta variable para ejecutar comandos que recopilan información que se muestra en el prompt.

Intenta ejecutar esto en un nuevo shell y verás qué sucede con la sesión:

$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'

2) HISTTIMEFORMAT

Si ejecutas history en la consola, obtendrás una lista de los comandos previamente ejecutados bajo tu cuenta.

$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '

Una vez que esta variable está configurada, nuevas entradas registran la hora junto con el comando, por lo que la salida se verá así:

1871  I ran this at: 01/05/19 13:38:07 cat /etc/resolv.conf
1872  I ran this at: 01/05/19 13:38:19 curl bbc.co.uk
1873  I ran this at: 01/05/19 13:38:41 sudo vi /etc/resolv.conf
1874  I ran this at: 01/05/19 13:39:18 curl -vvv bbc.co.uk
1876  I ran this at: 01/05/19 13:39:25 sudo su -

El formato corresponde a los símbolos de man date.

3) CDPATH

Para ahorrar tiempo en la línea de comandos, puedes usar esta variable para cambiar de directorios tan fácilmente como llamas a comandos.

Al igual que PATH, la variable CDPATH es una lista de rutas separadas por dos puntos. Cuando ejecutas un comando cd con una ruta relativa (es decir, sin una barra al principio), por defecto el shell busca en tu carpeta local los nombres correspondientes. CDPATH buscará en las rutas que has dado para el directorio al que deseas acceder.

Si configuraste CDPATH de esta manera:

$ CDPATH=/:/lib

y luego escribes:

$ cd /home
$ cd tmp

siempre llegarás a /tmp sin importar dónde estés.

Sin embargo, ten cuidado, porque si no incluyes en la lista la carpeta local (.) no podrás crear ninguna otra carpeta tmp y acceder a ella como de costumbre:

$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp

¡Ups!

Esto parece una confusión que sentí cuando me di cuenta de que la carpeta local no estaba incluida en la variable más familiar PATH… pero debes hacerlo en la variable PATH, porque podrías ser engañado al ejecutar un comando falso de algún código descargado.

Mi variable establece el punto de partida:

CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt

4) SHLVL

¿Alguna vez te has preguntado, al ingresar exit ¿Lo sacará de la actual shell bash a otra shell 'padre' o simplemente cerrará completamente la ventana del terminal?

Esta variable rastrea cuán profundo estás anidado en la shell bash. Si creas un nuevo terminal, se establece en 1:

$ echo $SHLVL
1

Luego, si inicias otro proceso de shell, el número aumenta:

$ bash
$ echo $SHLVL
2

Esto puede ser muy útil en scripts donde no estás seguro si debes salir o no, o para rastrear dónde te encuentras en la anidación.

5) LINENO

También es útil para analizar el estado actual y la depuración la variable LINENO, que indica la cantidad de comandos ejecutados en la sesión hasta ahora:

$ bash
$ echo $LINENO
1
$ echo $LINENO
2

Esto se utiliza con mayor frecuencia al depurar scripts. Insertando líneas como echo DEBUG:$LINENO, puedes determinar rápidamente dónde te encuentras en el script (o no).

6) REPLY

Si, como yo, sueles escribir código como este:

$ read input
echo hacer algo con $input

puede ser una sorpresa que no necesitas preocuparte por crear una variable en absoluto:

$ read
echo hacer algo con $REPLY

Hace lo mismo.

7) TMOUT

Para no permanecer demasiado tiempo en servidores de producción por razones de seguridad o no ejecutar accidentalmente algo peligroso en el terminal incorrecto, establecer esta variable actúa como una protección.

Si no se introduce nada durante un número establecido de segundos, se sale de la shell.

Es decir, es una alternativa a sleep 1 && exit:

$ TMOUT=1

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster