¿Cómo borrar completamente el historial de bash?

254

Quiero borrar todos los comandos anteriores del historial de mi servidor. Utilicé history -cy parece que todas las cosas están despejadas, pero cuando envío ssh al servidor, todos los comandos siguen ahí.

¿Cómo puedo borrarlos permanentemente?

hd.
fuente

Respuestas:

332

El archivo ~/.bash_historycontiene el historial.

Para borrar completamente el historial de bash en el servidor, abra la terminal y escriba

cat /dev/null > ~/.bash_history

Otra forma alternativa es vincularse ~/.bash_historya/dev/null

Sin embargo,

Un efecto secundario molesto es que las entradas del historial tienen una copia en la memoria y volverán al archivo cuando cierre la sesión .

Para solucionar esto, use el siguiente comando (funcionó para mí):

cat /dev/null > ~/.bash_history && history -c && exit
devav2
fuente
17
También puede poner el comando anterior en .bashrc y .bash_logout. lo que quiere decir cuando se conecta u tendrá historia clara y cuando se cierra la sesión a cabo su historial se borrará
Qasim
26
¿Por qué necesitas / dev / null allí? ¿No > ~/.bash_hstorysería suficiente?
Configurador
44
si seria suficiente!
fromnaboo
3
Traté de hacerlo en una caja de frambuesa mientras estaba conectado a través de SSH. Agregué el comando anterior (cat / dev / null> ~ / .bash_history && history -c && exit) a .bashrc y .bash_logout según lo sugerido por @Qasim. Ahora, tan pronto como me conecto a través de SSH, el host remoto cierra la conexión (después de imprimir el motd). Ayuda: /
Avanzado
14
Muestra lo que sucede cuando haces cosas a ciegas sin leer correctamente y sin comprender el procesamiento y el flujo de datos. También muestra las trampas de la mala comunicación. Lo que hizo devav2 fue ejecutarlo una vez, y lo que Qasim debería haber escrito es eliminar el comando de salida antes de agregarlo en el script de inicio de sesión.
Sri
142

Qué hacer:

En cada shell bash abierto (puede tener múltiples terminales abiertas):

history -c
history -w

Por qué: como se indicó anteriormente, history -cvacía el archivo ~/.bash_history. Es importante tener en cuenta que bash shell no vacía inmediatamente el historial al archivo bash_history. Por lo tanto, es importante (1) vaciar el historial al archivo y (2) borrar el historial en todos los terminales . Eso es lo que hacen los comandos anteriores.

Referencia: http://www.giannistsakiris.com/index.php/2007/09/13/how-to-clear-bash-history-and-what-to-watch-out-for/

callpraths
fuente
3
En realidad, al revés funcionó para mí.
Kristianp
24
En muchos casos, puede combinar estos dos comandos juntos:history -cw
Elliot
2
Por alguna razón, esto no funciona en Ubuntu 14.04, probablemente en otros. Debería pero no lo hace. Si emite el comando "history -cw" puede confirmar con la flecha hacia arriba que el historial ya no está allí, pero si inicia otra ventana de terminal (en el escritorio de Unity) con shift + clic en el icono del terminal (lo tengo fijado en el lanzador) el historial de comandos está de vuelta, no importa cuántas veces hagas "history -cw". "cat / dev / null> ~ / .bash_history" es la única forma que funcionó para mí.
Hatoru Hansou
Si bien no soy Ubantu, funciona bien para mi shell bash en OSX.
Scott Biggs
3
Es historia -c y luego historia -w, primero borras la historia y luego escribes los cambios. Esto se confirma fácilmente cerrando el terminal y volviéndolo a abrir, con -w primero los comandos están allí nuevamente, con -w el último historial se borra efectivamente.
Hatoru Hansou
56

ejecuta los siguientes comandos para borrar el historial para siempre

history -c && history -w

¡buena suerte!

Edwin Jose
fuente
3
Mucho mejor que la respuesta aceptada. ;)
Chiramisu
Esta respuesta sería aún más útil si explicara qué hacen estos indicadores (y, por lo tanto, por qué / cuándo son los comandos correctos para usar).
LarsH
20

Hay otra mucho más simple: ejecutar history -cen el indicador de terminal y desaparecer son todas las entradas en el bash_historyarchivo.

Peter Eijlander
fuente
No, no es. Cerrar sesión, iniciar sesión, la flecha hacia arriba me da todo. También necesitas el "historial -w".
stolsvik
1
Si lees la pregunta del OP sabrás que usar history -ces el método exacto que condujo a esta pregunta.
J.Money
10

Otra forma de hacerlo es eliminar el ~/.bash_historyarchivo mediante el rm ~/.bash_historycomando. Cuando inicie sesión en otro momento, el .bash_historyarchivo se creará automáticamente.

Anwar
fuente
44
Al menos en algunos sistemas operativos ~ / .bash_history se escribe en el disco cuando cierra la sesión. No estoy seguro acerca de * buntus.
d -_- b
7

Borrar el historial actual del shell:

history -c

Cuando cierra la sesión, el historial de su shell actual se agrega a ~ / .bash_history, que es un caché de historiales de shells anteriores, hasta un número máximo (vea HISTFILESIZE en "man bash").

Si desea eliminar el historial por completo, entonces esencialmente tiene que vaciar ~ / .bash_history que muchas de las entradas anteriores han sugerido. Como:

history -c && history -w

Esto borra el historial del shell actual y luego obliga al historial del shell actual (vacío) a sobrescribir ~ / .bash_history ... o, para ser más exactos, lo obliga a sobrescribir HISTFILE (que por defecto es ~ / .bash_history).

Espero que esto ayude.

mobiGeek
fuente
44
Su respuesta es precisa, pero la pregunta tenía dos años, había aceptado respuestas e incluía la misma respuesta que usted dio.
Charles Green
6
rm ~/.bash_history; history -c; logout

Ahora inicie sesión nuevamente y sea testigo de que su flecha hacia arriba no le da nada.

Stolsvik
fuente
1
@KasiyA Se trata de un servidor y una sesión ssh, por lo que no es necesario editar ...
Radu Rădeanu
0

Prueba este

edite su .profiley agregue la siguiente línea al final del archivo

rm -f .bash_history

de esta manera, cada vez que inicie sesión, eliminará su archivo .bash_history automáticamente. Agregar la opción de eliminación recursiva -r parece peligroso y no es necesario.

Profesor de informática mixto
fuente