Más de una vez accidentalmente ejecuté varios comandos y contaminé mi historial de bash. ¿Cómo cierro mi terminal sin guardar mi historial de bash? Estoy usando Fedora.
Más de una vez accidentalmente ejecuté varios comandos y contaminé mi historial de bash. ¿Cómo cierro mi terminal sin guardar mi historial de bash? Estoy usando Fedora.
Respuestas:
El historial de su shell se guarda en el archivo indicado por la HISTFILE
variable. Asi que:
unset HISTFILE
Esto también se aplica a zsh, pero no a ksh, que sigue guardando en el archivo indicado $HISTFILE
cuando se inicia el shell (y, por el contrario, decide guardar su historial en ksh una vez que ha iniciado el shell).
Respuesta corta:
Escriba esto en el indicador:
$ kill -9 $$
Esto matará su shell de inmediato sin que el shell pueda hacer nada como atrapar la señal, guardar el historial, ejecutar ~/.bash_logout
, advertir sobre trabajos detenidos o cualquiera de esas cosas buenas.
Respuesta larga:
Nota: Estas opciones no son mutuamente excluyentes; se pueden usar todos a la vez.
Opción 1:
Si eres un perfeccionista cuando se trata de abarrotar tu archivo de historial, entonces lo que puedes hacer es modificar la HISTIGNORE
variable para incluir globos de comandos que no deseas grabar. Por ejemplo, si agrega HISTIGNORE='ls*:cd*'
a su ~/.bashrc
, cualquier instancia de ls
y cd
no se inserta en su archivo de historial.
Opcion 2:
Si desea controlar comando por comando qué comandos quedan fuera de su historial, puede establecer HISTCONTROL='ignorespace'
qué omitirá cualquier línea de comando que comience con un espacio. El uso ignoreboth
también omitirá líneas repetidas. Luego, presionar la barra espaciadora antes de ingresar un comando hará que no se muestre en su archivo de historial.
Opcion 3:
Si solo quiere que sea así, cuando cierre el terminal, el shell sale inmediatamente, puede trap
indicar que el programa del terminal envía el shell ( xterm
por ejemplo, envía y SIGHUP
luego espera a que el shell salga) y salga sin guardar el historial cuando recibe esta señal Agregue esto a su ~/.bashrc
:
# don't record history when the window is closed
trap 'unset HISTFILE; exit' SIGHUP
kill -9
para cualquier cosa, excepto situaciones graves en las que todo lo demás ha fallado.
Me sorprende ver que nadie ha sugerido history -c
inmediatamente antes exit
. IINM (no soy un experto) que funcionará bien.
history -r
volverá a leer el archivo del historial, por lo que guardar se convierte en un no-op.
Hay dos variables de entorno que bash usa para determinar el archivo de historial y cuántas líneas escribir cuando se cierra el shell.
Puede descartar el historial de su sesión con cualquiera de estos (establecidos durante la sesión que desea omitir de su archivo de historial):
HISTFILE=/dev/null
o
HISTSIZE=0
Cualquiera de estos funciona bien en Bash en Fedora
No estoy seguro de por qué te importa tanto tu historial de comandos. Si necesita ciertos comandos con frecuencia, es posible que se divierta más si define alias para ellos, de modo que pueda recuperarlos con dos pulsaciones de teclas en lugar de tener que buscarlos en el historial.
Eli ya te dio la respuesta correcta para Bash, que es configurar HISTSIZE=0
.
Simplemente agregaría el método para hacerlo para la pantalla GNU . Presione Ctrl+A
(secuencia de escape de la pantalla) seguido de :scrollback 0
. Esto eliminará el historial de retroceso. Ahora puede hacer inmediatamente :scrollback 15000
para restablecer el tamaño del búfer de desplazamiento hacia atrás.
screen(1)
?
scrollback=0
.
Ctrl+a H
ni Ctrl+a :clear
eliminará la historia. Es necesario Ctrl+a :scrollback 0
. Puedes probarlo tú mismo. Comience una nueva sesión de pantalla. Ahora haz un cat /etc/passwd
. Ahora, haga cualquiera de los anteriores - Ctrl+a H
o Ctrl+a :clear
. Ahora, intente copiar desde el búfer de la pantalla con una flecha Ctrl+a [
seguida de una flecha hacia arriba para ver qué tan lejos puede llegar a copiar. Si ha hecho un Ctrl+a :scrollback
seguido por un clear
, solo iría tan lejos como puede ver en la ventana actual ya que no habrá ningún búfer de desplazamiento.
set HISTFILE
próxima vez que inicie sesión? (solo diga si esto es correcto o incorrecto)