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

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

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

Responder1

É de fatonão(bem) documentado e acho que 99% dos usuários do bash neste plano definem HISTSIZE para um número muito grande.

No GNU bash, a história é tratada através da poderosa biblioteca readline. A biblioteca tem a opção de limitar o tamanho do histórico ("sufocar" no jargão readline) ou não e o bash simplesmente define o histórico readline como sufocado/não sufocado. Se você olhar, por exemplo, GNU bash versão 4.2, arquivovariables.c, linha 4443, função void sv_histsize (char*) você encontrará este comentário (e todo o sufocamento/desencorajamento na função a seguir):

/* O que fazer depois que as variáveis ​​HISTSIZE ou HISTFILESIZE forem alteradas.
Se houver um valor para este HISTSIZE (e for numérico), abafe o histórico. Caso contrário, se NÃO houver valor para esta variável,
desfaça o histórico. Se o nome for HISTFILESIZE e seu valor for
numérico, trunque o arquivo de histórico para não conter mais do que esse número
de linhas. */

Então isso deve funcionar:

export HISTSIZE=""

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

export HISTSIZE="GOTCHA"

Espero que isto ajude.

informação relacionada