Puede eliminar solo la línea ofensiva de bash
el historial de , en lugar de borrar todo el historial. Simplemente elimine la línea con el -d
marcar, luego guardar (escribir) el nuevo historial con el -w
bandera:
$ history
351 ssh [email protected]
352 my_password
$ history -d 352
$ history -w
Hay dos partes en esto:
bash
almacena el historial en un archivo~/.bash_history
que, de forma predeterminada, se escribe al final de la sesión- el
history
que se guarda en la memoria
Para estar seguro, debe borrarlo de la sesión:
history -c
y trunque el archivo de historial según sea necesario:
> ~/.bash_history
Si su sesión en la que escribió la contraseña todavía está abierta, entonces otra forma de cubrir su rastro es configurar el HISTFILE
variable al dispositivo nulo para que el historial no se escriba en ~/.bash_history
cuando la sesión sale:
export HISTFILE=/dev/null
Dado que bash (al menos todas las versiones históricas y actuales que conozco) no guarda automáticamente el historial hasta que sale, una estrategia generalmente aplicable cuando ha escrito un comando que quiere asegurarse de que nunca se guarde es escribir inmediatamente:
kill -9 $$
Esto mata el caparazón con SIGKILL
, que no se puede capturar, por lo que el shell no tiene forma de guardar nada al salir.
La mayoría de los otros enfoques implican la limpieza después del hecho (es decir, después de que los datos ya hayan llegado al disco), lo que tiene muchas más posibilidades de error (falta una copia), especialmente si el sistema podría estar usando btrfs o similar.