Respuestas:
poner eso en .bashrc:
export HISTFILESIZE=
export HISTSIZE=
Ahí tienes historia ilimitada. Actualmente tengo 27000 entradas :)
De "man bash":
Si
HISTFILESIZE
no está establecido, no se realiza ningún truncamiento.
Eso significa que .bash_history nunca se trunca
También lo mismo parece aplicarse a HISTSIZE, aunque no pude encontrarlo documentado.
Otra característica interesante que voy a probar es la siguiente:
Si el
HISTTIMEFORMAT
la variable se establece, las marcas de tiempo se escriben en el archivo de historial, marcadas con el carácter de comentario de historial, por lo que pueden conservarse en las sesiones de shell.
Avísame si ya lo has probado ...
gdb
; si establece un HISTSIZE
la variable lo tomará como un 0, lo que deshabilitará el tamaño del historial por completo.
export
, HISTFILESIZE
está en el número de líneas (no en bytes), y el archivo histórico El truncado ocurre cuando configuras la variable HISTFILESIZE
(y cuando sale shell). Así que no lo configures dos veces en tu archivo de configuración con diferentes valores ...
(traspasando mi respuesta de https://stackoverflow.com/a/19533853/128597 )
Después de muchas iteraciones grandes y feas y casos extraños en los últimos años, ahora tengo una sección concisa de mi .bashrc dedicado a esto
Primero, debes comentar o elimina esta sección de tu .bashrc (por defecto para Ubuntu). Si no lo haces, entonces ciertos entornos (como correr screen
sesiones) todavía truncará su historia:
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# HISTSIZE=1000
# HISTFILESIZE=2000
Segundo, Agrega esto a la parte inferior de tu .bashrc:
# Eternal bash history.
# ---------------------
# Undocumented feature which sets the size to "unlimited".
# https://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: todos los comandos se escriben 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 aumenta a 10 MB (lo que llevará un largo largo tiempo) no notará mucho efecto en su tiempo de inicio de bash.
HISTFILESIZE
Esta es la razón por la que debe eliminar cualquier evento que ocurra, excepto el que desee. También se truncará en la salida de shell (pero eso es lo que se espera). Y no deberías necesitar export
.
bash --norc
Truncará la historia de nuevo.
export HISTFILE="/home/$USER/hist/`uname -n``tty | tr '/' '-'`"
para mantener el historial de shell separado por sesión (según el nombre de host y el nombre de tty). Por supuesto que tengo que crear el directorio ~ / hist primero.
PROMPT_COMMAND="${PROMPT_COMMAND:+${PROMPT_COMMAND} ;}history -a";
Incluido en ~ / .bashrc :
# append a session's history on shell exit
shopt -s histappend
export HISTFILESIZE=
export HISTSIZE=
Esta respuesta satisface los siguientes criterios:
un historial maestro separado (ninguna sesión puede interrumpir tu historial)
Escritura automática de historial (sin teclas de acceso rápido)
Escrituras poco frecuentes (sin añadir después de cada comando)
En arranque interactivo, si $HISTFILESIZE
se establece en un número, bash trunca $HISTFILE
a ese numero En cierre interactivo, si la opción de shell histappend
se establece, bash anexa $HISTSIZE
líneas a $HISTFILE
, de lo contrario se sobrescribe $HISTFILE
.
Cada vez que se crea una pestaña en la Terminal, ~/.bash_profile
es leído, lo que significa que bash no va a leer tu ~/.bashrc
. Agregue la siguiente línea a su ~/etc/bash_profile
:
# if bashrc has content, source it
[[ -s ~/.bashrc ]] && . ~/.bashrc
Si usa la pantalla, su archivo de configuración es ~ / .screenrc. Si desea que la pantalla registre el historial, solo debe configurarlo para que use un shell de inicio de sesión que generará sus archivos de inicio de bash (y registrará su historial).
# use bash, make it a login shell
defshell -bash
Un concepto diferente (puede no ser aplicable) pero puede tener unlimited
historial al usar lavamanos .