Como obter um histórico de comandos infinito no bash?

51

Eu defino export HISTSIZE=99999999999999 , mas esse é o melhor caminho? Não sei se um estouro pode ocorrer. Estou procurando uma maneira testada e confiável de remover os limites do histórico de comandos.

    
por user55542 29.04.2012 / 18:59

1 resposta

64

é realmente não (bem) documentado e eu acho que 99% do usuário bash neste planejado definiu HISTSIZE para um número muito maior.

No bash do GNU, o histórico é tratado através da poderosa biblioteca readline. A biblioteca tem a opção de limitar ou não o tamanho do histórico ("stifle" no jargão readline) e o bash simplesmente define o histórico readline como sufocado / não-espaçado. Se você olhar para, por exemplo GNU bash versão 4.2, arquivo variables.c, linha 4443, função void sv_histsize (char *) você encontrará este comentário (e todo o sufocante / unstifling na função que se segue):

/* What to do after the HISTSIZE or HISTFILESIZE variables change.
If there is a value for this HISTSIZE (and it is numeric), then stifle the history. Otherwise, if there is NO value for this variable,
unstifle the history. If name is HISTFILESIZE, and its value is
numeric, truncate the history file to hold no more than that many
lines. */

Então, isso deve funcionar:

export HISTSIZE=""

E também isso (se você se sentir desafiador):

export HISTSIZE="GOTCHA"

Espero que isso ajude.

    
por 04.05.2012 / 23:17

Tags