Formas de evitar que los comandos que ejecutas acaben en tu history

bash_history.gif

Puede haber ocasiones en las que no es una buena idea que cuando ejecutemos un comando desde nuestra shell (bash), éste se almacene en el history.

En ejemplo real y práctico sería el evitar que se graben datos sensibles tales como contraseñas. A veces tenemos que arrancar un servicio que puede requerir como parámetros un nombre de usuario y una contraseña y estos datos en condiciones normales se quedarían grabados en el history.

Existen varias formas de evitar que esto ocurra. Algunas de éstas son:

Escribe un espacio en blanco antes del comando:

espacio echo “hola”

Este método sólo funciona si tenemos la variable HISTCONTROL asignada con el valor ignorespace o ignoreboth. Esta variable por defecto viene asignada con el valor ignoreboth, al menos en Ubuntu 14.04:

tuxotron@tuxotron-T530:~$ grep “HISTCONTROL” .bashrc HISTCONTROL=ignoreboth

HISTCONTROL también se puede declarar de forma global en /etc/bash.bashrc

Deshabilita temporalmente el history:

Ejecuta:

set +o history o shopt -uo history

Para volver a habilitarlo:

set -o history o shopt -so history

Deshabilita el history para la sesión actual sólamente:

unset HISTFILE

Este método sólo funciona para sesión actual, es decir, si abres un terminal nuevo, el history estaría activado. Esto evita el volcado del búfer de memoria en el fichero .bash_history, es decir en dicha sesión puedes navegar por el búfer usando los cursores (arriba y abajo), pero cuando termines la sesión, dicho búfer no será volcado en el sistema de ficheros.

Borrando un comando específico del history:

Si has ejecutado cierto comando antes de deshabilitar el history, puede que todo lo que quieras hacer es borrar ese preciso comando o varios de ellos, otro método sería borrándolos de tu history:

history -d <número>

Dónde el número es la línea de dicho comando en tu hisrory. Para saber el número puedes ejecutar el comando history tal cual, o filtrar la salida con un grep.

Matando la sesión:

Esta sea quizás la forma menos elegante y podría matar otras sesiones, pero funcionar, funciona:

kill -9 $$

Hacer que el .bash_history sea de sólo lectura :

chattr +i .bash_history

De esta forma el sistema a la hora de volcar el búfer en dicho fichero, se verá bloqueado.

Fuente