Cuándo trabajamos con el terminal todos sabemos que usando las flechas de arriba y abajo del teclado podemos ver los comandos que hemos escrito en el terminal y volver a ejecutarlos sin tener que escribir toda la linea de nuevo.

Esto es posible gracias al historial de bash que almacena los comandos que vamos escribiendo y los guarda de una sesión a otra mediante el archivo ~/.bash_history. En este archivo se almacenan los comandos que hemos usado cada vez que cerramos una sesión de terminal.

Para consultar este historial escribimos history en el terminal.

[usuario@equipo ~]$ history

Por supuesto podemos usar filtros como head, tail, less o grep para consultar mejor la salida.

[usuario@equipo ~]$ history |head -9
1  cd
2  mkdir uno
3  touch uno/archivo
4  clear
5  chmod og-rwx -R uno
6  ls -lh uno
8  rm -rf uno/
9  history

Si en algún momento queremos vaciar el historial usamos la opción -c

[usuario@equipo ~]$ history -c
[usuario@equipo ~]$ history
1  history

El comando anterior borrará el historial de la sesión actual pero no se guardará en el .bash_history y puede ser consultado por aquellos usuarios que tengan acceso a él mientras no cerremos el terminal (o la sesión en ese terminal) .

Esto es así por el funcionamiento del historial. Al abrir un terminal se carga .bash_history y conforme escribimos comandos se van almacenando temporalmente en memoria, al cerrar el terminal el archivo .bash_history se sobrescribe con el historial almacenado en la memoria.

Por esta razón cuando trabajamos con varios terminales a la vez sólo se guarda el historial del último terminal que cerramos.

Si queremos guardar el historial en el .bash_history sin cerrar el terminal se usa la opción -w

[usuario@equipo ~]$ history -w

Por tanto, para no dejar rastro del historial tenemos que usar la opción -c y -w.

[usuario@equipo ~]$ history -c && history -w

o bien borrar el archivo ~/.bash_history

[usuario@equipo ~]$ history -c && rm ~/.bash_history