93 votos

Cómo: Ilimitado Bash shell o la historia?

Es allí una manera de definir un historial ilimitado en Bash ?

87voto

morgenrot Puntos 566

puesto que en .bashrc:

export HISTFILESIZE=
export HISTSIZE=

Hay que ir, historial ilimitado. Actualmente tengo 27000 entradas :)

De "man bash":

Si HISTFILESIZE no está establecido, no truncamiento se realiza.

Que eso significa .bash_history nunca es truncado

También el mismo parece aplicar a HISTSIZE, aunque no pude encontrar que documentado.

Otra buena característica que voy a intentar es este:

Si el HISTTIMEFORMAT variable se establece, sellos de tiempo se escriben en el archivo histórico, marcado con la historia carácter de comentario, por lo que puede ser preservada a través de los shell de sesiones.

Déjeme saber si usted ha tratado de que ya...

47voto

fotinakis Puntos 221

(volver a colocar mi respuesta de http://stackoverflow.com/a/19533853/128597)

Después de muchos grandes, feos iteraciones y raros casos de borde a través de los años, ahora tengo una pequeña sección de mi .bashrc dedicado a esto.

En primer lugar, usted debe comentar o eliminar esta sección de su .bashrc (por defecto para Ubuntu). Si no, entonces ciertos entornos (como correr screen de las sesiones) todavía va a truncar su historia:

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# HISTSIZE=1000
# HISTFILESIZE=2000

Segundo, añadir esto a la parte inferior 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: todos los comandos se escriben inmediatamente después de que se ejecute, por lo que si accidentalmente pegar una contraseña que usted no puede simplemente "kill -9 %%" para evitar que la historia de la escritura, usted tendrá que quitar manualmente.

También tenga en cuenta que cada sesión de bash se carga el historial completo archivo en la memoria, pero incluso si su historial de archivo crece hasta los 10 mb (que va a tomar un largo, largo tiempo) usted no notará mucho de un efecto en el tiempo de inicio de bash.

10voto

cdosborn Puntos 147

No podía encontrar un hilo que responde a esta pregunta con mi criterio, así que aquí está mi solución.

criterios importantes

  1. un maestro independiente de la historia (de sesiones no puede interrumpir su historia)

  2. automática de la historia de la escritura (sin teclas de acceso rápido)

  3. poco frecuentes escribe (sin anexar después de cada comando)

una solución natural

escribir este a ~/.bashrc:

# append a session's history on shell exit
shopt -s histappend
HISTFILESIZE=
HISTSIZE=

cómo la historia funciona en bash

En interactiva de inicio, si $HISTFILESIZE se establece en un número, bash trunca $HISTFILE a ese número. En interactive cerca, si el shell opción histappend se establece, bash anexa $HISTSIZE líneas $HISTFILE, de lo contrario, se sobrescribe $HISTFILE.

consejos para MacOSX (Terminal)

Cada vez que una ficha se crea en la Terminal, ~/.bash_profile es leer, 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

consejos para la pantalla

Si utiliza la pantalla, el archivo de configuración ~/.screenrc. Si desea que la pantalla de registrar la historia, solo necesitas configurarlo para utilizar un shell de inicio de sesión que será fuente de su bash archivos de inicio (y el registro de su historia).

# use bash, make it a login shell
defshell -bash

3voto

Mark West Puntos 11

Un concepto diferente (puede no ser aplicable), pero usted puede tener unlimited historia cuando el uso de shell del disipador.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: