46 votos

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

Hace tiempo configuré ~/.bash_profile para que tuviera más de 500 líneas de longitud, pero parece que el sistema no lo detecta.

¿Sabes por qué?

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

> history | wc -l
     500

50voto

Douglas Puntos 10417

También es necesario establecer HISTSIZE=10000000 .

HISTFILESIZE determina el número de líneas que se mantendrán en el archivo histórico mientras que HISTSIZE determina el número de líneas que se mantendrán en la memoria. Ambos valores por defecto son 500

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

2 votos

Es el export ¿palabra clave no necesaria? Algo así como export HISTSIZE=1000000

4 votos

@firstpostcommenter Sólo si quieres que la variable sea conocida por los procesos lanzados desde el shell

27voto

Petr Javorik Puntos 311

Es necesario exportar HISTSIZE y HISTFILESIZE variables de entorno en su ~/.bash_profile archivo.

Añade las siguientes líneas en tu ~/.bash_profile :

# history size
export HISTFILESIZE=1000000
export HISTSIZE=1000000

22voto

Zim Puntos 251

Respuesta:

Todo lo que tiene que hacer es establecer HISTSIZE en su perfil de bash ( ~/.bash_profile ). Puede dejar HISTFILESIZE desactive . Esto configurará ambos el historial en memoria y el historial basado en archivos.

# Saves 10 million lines in memory and in the bash history file.
HISTSIZE=10000000

Explicación, información adicional.

El problema es que HISTFILESIZE sólo establece el máximo historial almacenado en el archivo cuando se inicia una sesión. El HISTSIZE es lo que determina cuántas líneas se guardan al final de una sesión. Si HISTFILESIZE es mayor que tu HISTSIZE, nunca verás más que tu HISTSIZE porque el archivo se está sobrescribiendo con los comandos HISTSIZE ( a menos que Si se configura el historial para que se añada, pero eso es un tema aparte: busque histappend en comandos incorporados al shell para ello).

Esta es la razón por la que no ves ningún efecto. Con HISTSIZE por defecto (probablemente 500) tu archivo de historial siempre se sobrescribe con los comandos más recientes de $HISTSIZE. Cualquier cosa más antigua (que potencialmente podría hacer crecer la lista más allá de $HISTSIZE) es borrada.

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

HISTSIZE determina el número de líneas que se escribirán en el archivo histórico. La lista de comandos se trunca al salir, antes de escribirse en el archivo histórico, manteniendo N líneas más recientes. Por defecto, esta lista sobrescribe el archivo histórico.

HISTFILESIZE determina el tamaño del archivo histórico (en líneas). El archivo se trunca al iniciarse, manteniendo N líneas más recientes. Además, el archivo histórico se trunca potencialmente cada vez que se establece HISTFILESIZE.

Por último, aunque parece no estar documentado, BASH establece HISTFILESIZE en función de HISTSIZE si éste se establece durante el arranque. He probado esto en MacOS, y en algunas variedades de Ubuntu, y el comportamiento es consistente. Si se establece el HISTSIZE en un archivo de lanzamiento ( no a través de la línea de comandos por cualquier medio), HISTFILESIZE se establecerá para que coincida. (Pruébelo usted mismo: establezca HISTSIZE a un valor arbitrariamente grande en .bash_profile, salga e inicie una nueva terminal, luego echo $HISTSIZE $HISTFILESIZE y los encontrarás coincidentes).

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

2 votos

Tienes razón Zim. El código fuente de Bash muestra que sólo se establecerá HISTFILESIZE a HISTSIZE si HISTFILESIZE no está establecido. git.savannah.gnu.org/cgit/bash.git/tree/

1 votos

@robert He probado esto en MacOS Catalina v 10.15.7 GNU bash, versión 3.2.57(1)-release (x86_64-apple-darwin19). Todavía tengo sólo 21 líneas de historia. ¿Se puede sobrescribir en caso de poco espacio en disco?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X