Hay dos variables que controlan el tamaño del historial:
HISTFILESIZE El número máximo de líneas contenidas en el archivo de historial. Cuando a esta variable se le asigna un valor, el archivo de historial se trunca, si es necesario, para contener no más que ese número de líneas eliminando las entradas más antiguas. El archivo de historial también se trunca a este tamaño después de escribirlo cuando sale un shell. Si el valor es 0, el archivo de historial se trunca a tamaño cero. Los valores no numéricos y los valores numéricos inferiores a cero inhiben el truncamiento. El shell establece el valor predeterminado en el valor de HISTSIZE después de leer los archivos de inicio.
y
HISTSIZE El número de comandos para recordar en el historial de comandos (ver HISTORIAL a continuación). Si el valor es 0, los comandos no se guardan en la lista del historial. Los valores numéricos inferiores a cero dan como resultado que cada comando se guarde en la lista del historial (no hay límite). El shell establece el valor predeterminado en 500 después de leer los archivos de inicio.
Estas dos variables le permiten controlar el comportamiento de su historial. Básicamente, HISTSIZEes el número de comandos guardados durante su sesión actual y HISTFILESIZEes el número de comandos que se recordarán en todas las sesiones. Así por ejemplo:
$ echo $HISTSIZE
10
$ echo $HISTFILESIZE
5
$ history | wc
10 29 173
En el ejemplo anterior, dado que HISTSIZEse establece en 10, historydevuelve una lista de 10 comandos. Sin embargo, si cierra sesión y luego vuelve a iniciar sesión, historysolo devolverá 5 comandos porque HISTFILESIZEestá configurado en 5. Esto se debe a que, una vez que sale de su sesión, sus HISTFILESIZElíneas de su historial se guardan en su archivo de historial ( ~/.bash_historyde forma predeterminada, pero controlado por HISTFILE) En otras palabras, los comandos se agregan HISTFILEhasta que llegue a las $HISTFILESIZElíneas en ese punto, cada línea posterior agregada significa que se eliminará el primer comando del archivo.
Puede establecer los valores de estas variables en su ~/.profile(o ~/.bash_profilesi ese archivo existe). No los establezca en su ~/.bashrcprimer lugar porque no tienen nada que establecer allí y, en segundo lugar, porque eso provocaría un comportamiento diferente en los shells de inicio de sesión y no inicio de sesión, lo que puede ocasionar otros problemas .
Otras variables útiles que le permiten ajustar el comportamiento de su historial son:
HISTIGNORE: Esto le permite ignorar ciertos comandos comunes que rara vez son de interés. Por ejemplo, podría establecer:
export HISTIGNORE="pwd:df:du"
Eso haría que cualquier comando a partir de pwd, dfo duque se ignoran y no se guarda en su historia.
HISTCONTROL: Este te permite elegir cómo funciona el historial. Personalmente, lo configuré en lo HISTCONTROL=ignoredupsque hace que guarde comandos duplicados solo una vez. Otras opciones son ignorespaceignorar los comandos que comienzan con espacios en blanco y erasedupsque provocan que todas las líneas anteriores que coincidan con la línea actual se eliminen de la lista del historial antes de que esa línea se guarde. ignorebothes la abreviatura de ignorespace e ignoredups.
HISTTIMEFORMAT: Esto le permite configurar el formato de hora del archivo de historial. Vea la respuesta de Pandya o lea man bashpara más detalles.
Para más ajustes, tiene:
La histappendopción bash. Esto se puede configurar ejecutando shopt -s histappendo agregando ese comando a su ~/.bashrc. Si esta opción está configurada
la lista de historial se agrega al archivo nombrado por el valor de la variable HISTFILE cuando el shell sale, en lugar de sobrescribir el archivo.
Esto es muy útil ya que le permite combinar las historias de diferentes sesiones (piense en diferentes terminales, por ejemplo).
El historycomando tiene dos opciones útiles:
Podría, por ejemplo, agregar estos dos comandos a su PROMPT_COMMAND(que se ejecuta cada vez que su shell muestra el indicador, por lo que cada vez que inicia un nuevo shell y después de cada comando que ejecuta en él):
export PROMPT_COMMAND='history -a;history -r;'
Combinados, se aseguran de que cualquier nueva terminal que abra importará inmediatamente el historial de cualquier otra sesión de shell. El resultado es un historial común en todas las terminales / sesiones de shell.