¿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.
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. * /
Respuestas:
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):
Entonces esto debería hacer el truco:
Y también esto (si te sientes desafiante):
Espero que esto ayude.
fuente