¿Cómo obtener un historial de comandos infinito en bash?

54

Me puse export HISTSIZE=99999999999999pero ¿es esa la mejor manera? No sé si podría ocurrir un desbordamiento. Estoy buscando una forma probada y confiable de eliminar los límites del historial de comandos.

usuario55542
fuente
No hay ningún mecanismo incorporado para hacer eso que yo sepa.
¡Solo estoy comentando para que cuando esto sea respondido, yo también lo sepa!
2
debian-administration.org/articles/543 puede ser una mejor respuesta. Al menos, maneja valores de infinito mayores que la solución en superusuario. :-)
Probablemente podría reducir eso a 9999 en la práctica (o incluso 999; yo uso 1000). Nunca he encontrado una historia más grande que aproximadamente 1000 para ser útil. Si quiero recuperar un comando para convertirlo en un script, normalmente lo hago bien dentro de mil comandos. De lo contrario, puede desaparecer y no se hace daño.
Jonathan Leffler
@ JonathanLeffler: El mío es de 1300 líneas, y es tan pequeño como puedo hacerlo. Ctrl-R es muy útil.
l0b0

Respuestas:

69

de hecho no está (bien) documentado y supongo que el 99% de los usuarios de bash en este plan establecen HISTSIZE en un número muy grande.

En GNU, el historial de bash se maneja a través de la poderosa biblioteca readline. La biblioteca tiene la opción de limitar el tamaño del historial ("stifle" en la jerga de readline) o no, y bash simplemente establece el historial de readline en sofocado / no sofocado. Si observa, por ejemplo, GNU bash versión 4.2, archivo variables.c, línea 4443, función void sv_histsize (char *) encontrará este comentario (y toda la sofocación / inmovilización en la función que sigue):

/ * Qué hacer después de que las variables HISTSIZE o HISTFILESIZE cambien.
Si hay un valor para este HISTSIZE (y es numérico), sofoca el historial. De lo contrario, si NO hay un valor para esta variable,
elimine el historial. Si el nombre es HISTFILESIZE y su valor es
numérico, trunca el archivo de historial para que no contenga más de esa cantidad de
líneas. * /

Entonces esto debería hacer el truco:

export HISTSIZE=""

Y también esto (si te sientes desafiante):

export HISTSIZE="GOTCHA"

Espero que esto ayude.


fuente
2
Que los Tux te bendigan :)
meeDamian
17
Sugiero: export HISTSIZE = "INFINITE"
AmanicA