¿Cómo puedo modificar el contenido de mi bash_history
archivo? ¿Qué valores o variables controlan cuánto dura el historial? ¿Hay alguna otra cosa que pueda cambiar para proporcionar un mejor control de mi historial de BASH?
11
¿Cómo puedo modificar el contenido de mi bash_history
archivo? ¿Qué valores o variables controlan cuánto dura el historial? ¿Hay alguna otra cosa que pueda cambiar para proporcionar un mejor control de mi historial de BASH?
HISTSIZE
yHISTFILESIZE
son las únicas superficies de control que tiene para controlar la cantidad de historial que se mantiene.Respuestas:
Hay dos variables que controlan el tamaño del historial:
y
Estas dos variables le permiten controlar el comportamiento de su historial. Básicamente,
HISTSIZE
es el número de comandos guardados durante su sesión actual yHISTFILESIZE
es el número de comandos que se recordarán en todas las sesiones. Así por ejemplo:En el ejemplo anterior, dado que
HISTSIZE
se establece en 10,history
devuelve una lista de 10 comandos. Sin embargo, si cierra sesión y luego vuelve a iniciar sesión,history
solo devolverá 5 comandos porqueHISTFILESIZE
está configurado en 5. Esto se debe a que, una vez que sale de su sesión, susHISTFILESIZE
líneas de su historial se guardan en su archivo de historial (~/.bash_history
de forma predeterminada, pero controlado porHISTFILE
) En otras palabras, los comandos se agreganHISTFILE
hasta que llegue a las$HISTFILESIZE
lí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_profile
si ese archivo existe). No los establezca en su~/.bashrc
primer 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:Eso haría que cualquier comando a partir de
pwd
,df
odu
que se ignoran y no se guarda en su historia.HISTCONTROL
: Este te permite elegir cómo funciona el historial. Personalmente, lo configuré en loHISTCONTROL=ignoredups
que hace que guarde comandos duplicados solo una vez. Otras opciones sonignorespace
ignorar los comandos que comienzan con espacios en blanco yerasedups
que 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.ignoreboth
es 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 leaman bash
para más detalles.Para más ajustes, tiene:
La
histappend
opción bash. Esto se puede configurar ejecutandoshopt -s histappend
o agregando ese comando a su~/.bashrc
. Si esta opción está configuradaEsto es muy útil ya que le permite combinar las historias de diferentes sesiones (piense en diferentes terminales, por ejemplo).
El
history
comando tiene dos opciones útiles:history -a
: hace que el último comando se escriba automáticamente en el archivo de historialhistory -r
: importa el archivo de historial a la sesión actual.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):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.
fuente
El tamaño predeterminado del archivo de historial es de 500 líneas. Una vez que el archivo .bash_history alcanza las 500 líneas, las primeras entradas se eliminan para dejar espacio a las líneas más nuevas, como en FIFO. Puede cambiar esto cambiando el valor de la variable
HISTFILESIZE
que por defecto tiene el valor 500.Poner un
HISTFILESIZE=10000
en su .bashrc aumentará el número de líneas que el archivo de historial puede contener a 10000, lo que aumenta la vida útil de su contenido.fuente
HISTSIZE
el límite, considere cambiarHISTFILE
también. Si ejecutabash --norc
HISTSIZE
volverá al valor predeterminado, truncando suHISTFILE
salida./etc/bash.bashrc
establece unHISTFILESIZE
(o tal vezHISTSIZE
; no he comprobado cuál), entonces Bash parece truncarse.bash_history
en el punto que lee/etc/bash.bashrc
(o al menos en algún momento antes de que su nuevo límite se establezca en sus propios archivos de inicio de Bash). Para evitar esto, nuevamente, configure el suyoHISTFILE
para que su historial real vaya allí y no en el.bash_history
archivo que Bash está truncando.export
, ya que hacerlo lo haría visible para cualquier niño conchas, que luego podría verse truncado en lugar de hacerlo.bash_history
!)Lea
man bash
para obtener más detalles sobre la historia de bash como:En particular
HISTFILESIZE
yHISTSIZE
que estás buscando y te ayuda.fuente