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

54

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

user55542
fonte
não há mecanismo incorporado para fazer isso que eu conheço.
Só estou comentando para que, quando isso for respondido, eu também saberei !!
2
debian-administration.org/articles/543 pode ser uma resposta melhor. Pelo menos, ele lida com valores maiores de infinito do que a solução no superusuário. :-)
Você provavelmente poderia reduzir isso para 9999 na prática (ou até 999; eu uso 1000). Nunca achei um histórico maior que cerca de 1000 útil. Se eu quiser recuperar um comando para transformá-lo em um script, normalmente faço isso dentro de mil comandos. Caso contrário, ele pode ir e não há danos.
31812 Jonathan Leffler
@ JonathanLeffler: O meu é de 1300 linhas e é o menor possível. Ctrl-R é muito útil.
L0b0

Respostas:

69

na verdade, não está (bem) documentado e acho que 99% do usuário do bash neste planejado define 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 da linha de leitura) ou não, e o bash simplesmente define o histórico da linha de leitura como sufocado / não sufocado. Se você examinar, por exemplo, o GNU bash versão 4.2, o arquivo variables.c, linha 4443, a função void sv_histsize (char *), você encontrará este comentário (e todo o sufocante / desestabilizador na função a seguir):

/ * O que fazer após as variáveis ​​HISTSIZE ou HISTFILESIZE mudarem.
Se houver um valor para este HISTSIZE (e é numérico), sufoque o histórico. Caso contrário, se não houver valor para essa variável,
descompacte o histórico. Se o nome for HISTFILESIZE e seu valor for
numérico, trunque o arquivo de histórico para conter não mais que muitas
linhas. * /

Portanto, isso deve fazer o truque:

export HISTSIZE=""

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

export HISTSIZE="GOTCHA"

Espero que isto ajude.


fonte
2
Que o Tux abençoe :)
meeDamian
17
Eu sugiro: exportar HISTSIZE = "INFINITE"
AmanicA