No se puede aumentar la longitud del historial del shell bash de Mac OSX

15

Establecí ~ / .bash_profile hace un tiempo para tener más de 500 líneas de longitud, pero parece que el sistema no puede detectar esto.

¿Sabes por qué?

> nano -w ~/.bash_profile
export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced
HISTFILESIZE=10000000

> history | wc -l
     500
    
pregunta biotech 20.07.2016 - 11:51

3 respuestas

24

También necesitas establecer HISTSIZE=10000000 .

HISTFILESIZE determina el número de líneas a mantener en el archivo histórico, mientras que HISTSIZE determina el número de líneas a mantener en la memoria. Ambos por defecto son 500

Ejecute echo $HISTFILESIZE $HISTSIZE antes de hacer el cambio y luego otra vez después. Debería ver 10000000 500 primero y luego 10000000 10000000 después.

    
respondido por el Allan 20.07.2016 - 12:12
5

Debe exportar las variables de entorno HISTSIZE y HISTFILESIZE en su archivo ~/.bash_profile .

Agregue las siguientes líneas en su ~/.bash_profile :

# history size
export HISTFILESIZE=1000000
export HISTSIZE=1000000
    
respondido por el Petr Javorik 05.04.2018 - 10:37
2

El problema es que HISTFILESIZE solo establece el historial máximo almacenado en el archivo cuando inicia una sesión. HISTSIZE es lo que determina cuántas líneas se guardan al final de una sesión. Si HISTFILESIZE es más grande que HISTSIZE, nunca verá más que HISTSIZE porque el archivo se sobrescribe con los comandos HISTSIZE ( a menos que configure el historial para anexar, pero ese es un tema aparte: busque histappend en comandos incorporados del shell para eso).

Esta es la razón por la que no estás viendo ningún efecto. Con HISTSIZE por defecto (probablemente 500) su archivo histórico siempre se sobrescribe con los comandos $ HISTSIZE más recientes. Cualquier cosa anterior (que potencialmente podría hacer crecer la lista más allá de $ HISTSIZE) se elimina.

Para guardar 10 millones de líneas, solo necesitas configurar HISTSIZE en tu ~/.bash_profile :

HISTSIZE=10000000

Para la mayoría de los casos, no es necesario establecer HISTFILESIZE independientemente de HISTSIZE.

HISTSIZE determina cuántas líneas se escribirán en el archivo histórico. La lista de comandos se trunca al salir, antes de escribir en el archivo histórico, manteniendo N las líneas más recientes. De forma predeterminada, esta lista sobrescribe el archivo histórico.

HISTFILESIZE determina el tamaño del archivo de historial (en líneas). El archivo se trunca al inicio, manteniendo N las líneas más recientes. Además, el archivo histórico se trunca potencialmente cuando se establece HISTFILESIZE.

Finalmente, aunque parece no estar documentado, BASH establece HISTFILESIZE basándose en HISTSIZE si HISTSIZE está configurado durante el inicio. He probado esto en macOS, y algunas variedades de Ubuntu, y el comportamiento es consistente. Si establece HISTSIZE en un archivo de inicio ( no a través de la línea de comandos por cualquier medio), HISTFILESIZE se configurará para que coincida. (Pruébelo usted mismo: establezca HISTSIZE en un valor arbitrariamente grande en .bash_profile, salga e inicie un nuevo terminal, luego echo $HISTSIZE $HISTFILESIZE y los encontrará coincidiendo).

Como resultado, no hay razón para tocar HISTFILESIZE a menos que desee diferentes valores, y los casos de uso para tener diferentes valores son raros (y generalmente implican más configuraciones de personalización de historial para obtener algo útil).

    
respondido por el Zim 10.10.2018 - 00:03

Lea otras preguntas en las etiquetas