Quiero que mi ".bash_history" archivo a ser ilimitada. por ejemplo, Así que siempre puede volver atrás y ver cómo he construido/configurar algo, o lo que ingenioso comando, o cómo algunos comandos rompió algo de semanas. ¿Cómo puedo cambiar esta configuración?
Respuestas
¿Demasiados anuncios?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.
Set HISTSIZE
y HISTFILESIZE
a una cadena vacía:
HISTSIZE= HISTFILESIZE=
En bash 4.3 y más tarde también puede utilizar 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).
Hay (al menos) dos relevantes env variables aquí:
- HISTSIZE: el número de entradas en el archivo de historial de
- HISTFILESIZE: el número de líneas en el archivo de historial de
Creo que estamos de acuerdo en que el término ilimitado a menudo es el mismo como muy grande (o no tienen límite de almacenamiento de archivos?). Así que acaba de establecer los valores muy grandes.
Como Jörg Beyer se mencionó anteriormente, HISTSIZE
y HISTFILESIZE
son clave.
Además, usted debe definitivamente echa un vistazo a la variable de entorno HISTCONTROL
, lo que le permite hacer cosas interesantes como que no tienda duplicar el historial de comandos (HISTCONTROL=erasedups
). No hay punto de tener historial ilimitado si usted tiene que navegar a través de cientos de líneas de cd ..
o similar.
Enlaces: aquí, y trabajar con bash historia. La fiesta de la Variable de preguntas frecuentes también es digno de navegación.
Sería mejor que comprar un cuaderno y anotar las cosas que han hecho que funciona y es bueno. Más rápido, más simple que la paginación a través de resmas de bash historia.
En cuanto a la construcción de material de lectura acerca de los makefiles. En cuanto a la configuración de las cosas, utilizar el control de versiones y comentarios. En cuanto a tareas comunes, escribir secuencias de comandos de shell.
Mi recomendación es sólo para mantener un par de días el valor de la historia. Después de que usted no puede estar demasiado seguro de que es el conjunto de comandos.