Quiero que mi .bash_history
archivo sea ilimitado. Por ejemplo, siempre puedo regresar y ver cómo construí / configuré algo, o qué fue ese ingenioso comando, o cómo algún comando rompió algo hace semanas. ¿Cómo cambio esta configuración?
Quiero que mi .bash_history
archivo sea ilimitado. Por ejemplo, siempre puedo regresar y ver cómo construí / configuré algo, o qué fue ese ingenioso comando, o cómo algún comando rompió algo hace semanas. ¿Cómo cambio esta configuración?
Respuestas:
Establezca HISTSIZE
y HISTFILESIZE
en .bashrc a una cadena vacía:
HISTSIZE=
HISTFILESIZE=
En bash 4.3 y versiones posteriores también puedes usar HISTSIZE=-1 HISTFILESIZE=-1
:
n. Setting HISTSIZE to a value less than zero causes the history list to be
unlimited (setting it 0 zero disables the history list).
o. Setting HISTFILESIZE to a value less than zero causes the history file size
to be unlimited (setting it to 0 causes the history file to be truncated
to zero size).
HISTSIZE= HISTFILESIZE=
resultados en deshabilitar completamente el historial de bash, al menos para mí.
HISTSIZE=-1 HISTFILESIZE=-1
deshabilitó mi historial, mientras que HISTSIZE= HISTFILESIZE=
hice el truco. CentOS 7 aquí.
HISTSIZE= HISTFILESIZE=
que deberíasexport HISTSIZE=
export HISTFILESIZE=
Después de muchas iteraciones grandes y feas y casos extraños a lo largo de los años, ahora tengo una sección concisa de mi .bashrc dedicada a esto.
Primero, debe comentar o eliminar esta sección de su .bashrc (predeterminado para Ubuntu). Si no lo hace, ciertos entornos (como ejecutar screen
sesiones) seguirán truncando su historial:
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# HISTSIZE=1000
# HISTFILESIZE=2000
En segundo lugar, agregue esto al final de su .bashrc:
# Eternal bash history.
# ---------------------
# Undocumented feature which sets the size to "unlimited".
# http://stackoverflow.com/questions/9457233/unlimited-bash-history
export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="[%F %T] "
# Change the file location because certain bash sessions truncate .bash_history file upon close.
# http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login
export HISTFILE=~/.bash_eternal_history
# Force prompt to write history after every command.
# http://superuser.com/questions/20900/bash-history-loss
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
Nota: cada comando se escribe inmediatamente después de ejecutarse, por lo que si accidentalmente pega una contraseña, no puede simplemente "matar -9 %%" para evitar la escritura del historial, deberá eliminarla manualmente.
También tenga en cuenta que cada sesión de bash cargará el archivo de historial completo en la memoria, pero incluso si su archivo de historial crece a 10 MB (lo que llevará mucho, mucho tiempo) no notará mucho efecto en el tiempo de inicio de bash.
HISTFILESIZE=
y en HISTSIZE=
blanco en lugar de -1, y asegúrese de no tener ninguna otra declaración de esos parámetros en un .bashrc o .bash_profile o .profile.
.bashrc
, tuve esa configuración después en otro archivo cargado por .bashrc ..., ¡ahora funciona! ¡gracias!
cat ~/.bash_history >>~/.bash_eternal_history
HISTFILESIZE
(y posiblemente HISTSIZE
) tendrá un efecto inmediato no puede exagerarse .
Como Jörg Beyer mencionó anteriormente, HISTSIZE
y HISTFILESIZE
son clave.
Además, definitivamente debe consultar la variable ambiental HISTCONTROL
, que le permite hacer cosas interesantes como no almacenar comandos de historial duplicados (HISTCONTROL=erasedups
). No tiene sentido tener un historial ilimitado si tiene que navegar a través de cientos de líneas cd ..
o similares.
Enlaces: aquí , y trabajando con bash history . Las preguntas frecuentes de bash Variable también valen la pena .
Ctrl-r
personajes Ctrl-o
Ctrl-o
Ctrl-o
Ctrl-o
. Es por eso que mantengo duplicados en la historia.
Ctrl-o
para qué sirve ?
Ctrl-o
ejecuta el comando en el indicador y muestra de inmediato el comando justo después del anterior en el historial. Una ventaja es que después de usar Ctrl-r
para encontrar un comando antiguo (posiblemente usando las flechas hacia arriba y hacia abajo para moverse a los comandos vecinos en el historial), es suficiente mantener Ctrl
presionado y presionar o
varias veces para ejecutar nuevamente una serie anterior de comandos, incluso en bucle infinito si tu quieres. Ver también GNU Readline - Wikipedia
Hay (al menos) dos entornos relevantes aquí:
Creo que podemos estar de acuerdo en que el término ilimitado es a menudo el mismo que muy grande (¿o tiene almacenamiento ilimitado de archivos?). Tan solo establezca los valores muy grandes.