A veces, cuando ejecuto comandos como rm -rf XYZ
, no quiero que esto se registre en el historial de Bash, porque podría ejecutar accidentalmente el mismo comando nuevamente por reverse-i-search
. ¿Existe una buena forma de evitar que esto suceda?
93
bash
se puede usar para escribir scripts de shell (por lo tanto, programación), este aspecto particular no tiene absolutamente nada que ver con la programación (la historia es una cosa interactiva solamente). Votación para cerrar.Respuestas:
Si ha establecido la
HISTCONTROL
variable de entorno enignoreboth
(que generalmente se establece de manera predeterminada), los comandos con un carácter de espacio inicial no se almacenarán en el historial (así como los duplicados).Por ejemplo:
Esto es lo que
man bash
dice:Ver también:
fuente
En su .bashrc / .bash_profile / donde quiera, ponga
export HISTIGNORE=' *'
. Luego, comience cualquier comando que desee ignorar con un espacio.fuente
HISTCONTROL
variable de entorno, que no necesariamente se haignorespace
establecido.HISTCONTROL
contieneignorespace
, en realidad solo es redundante incluir `*` enHISTIGNORE
. Los dos operan de forma independiente.Aún mejor uso
HISTIGNORE
. Esto le permite especificar un conjunto de patrones que se ignorarán (comorm
). Es mejor (creo) que simplemente canalizar toda la historia/dev/null
.fuente
Sé que no es tan mejor como las respuestas anteriores, pero esto matará el shell Bash actual sin guardar nada, útil cuando HISTCONTROL no está configurado de forma predeterminada, se olvidó de configurarlo, o simplemente se olvidó de poner un espacio inicial y acaba de escribir algunas contraseñas y no quiere que permanezcan permanentemente en el historial.
Esta es la forma más rápida, y algo como borrar el archivo de historial no es tan bueno porque necesita hacerlo fuera de un shell para guardar el historial (inicie sesión como un usuario diferente y use su / sudo, creando un trabajo en segundo plano, etc.)
fuente
Puedes hacer una de las dos cosas:
O comience el comando con un espacio.
fuente
ignorespace
configurado de forma predeterminada.HISTFILE
esta forma evita almacenar cualquier historial y no evita que el comando se agregue al historial en memoria.O
(similar a la respuesta anterior, pero más corta: export HISTFILE = / dev / null)
fuente
Al iniciar el shell, limpio explícitamente el historial de las entradas que no quiero que estén allí. Por ejemplo, no quiero ninguno
rm -rf
en el historial (es un trauma después de eliminar un directorio lleno de resultados procesados durante la noche, solo con un soloArrow-Up
+Enter
:)Puse el siguiente fragmento en mi archivo de inicio (funciona con
.zshrc
, también debería funcionar con.bashrc
)fuente