Como parar o histórico de anexação de Bash

8

Estou tendo muitos problemas para configurar a história do terminal do Bash da maneira que desejo. Eu gostaria de não ter entradas duplicadas e, se eu digitar um comando, quero salvá-lo e remover as duplicatas acima.

O problema é que o comando history me mostra que está funcionando da maneira que eu quero, mas depois que eu fizer logout, as duplicatas voltam novamente. Eu acredito que é apenas acrescentar a história ao existente. Eu tenho essas linhas no meu arquivo .bashrc :

HISTCONTROL=ignoreboth:erasedups
shopt -u histappend

Eu até tentei descomentar shopt , mas ele ainda anexa o histórico no logout. Como posso ter o histórico exatamente como é antes de sair?

    
por craig 15.09.2011 / 05:45

1 resposta

6

O erasedups deve fazer o que você quer com relação às duplicatas - apenas note que a eliminação de duplicatas é acionada no momento de anexar uma nova entrada ao histórico e que apaga todas as ocorrências antigas de um comando, deixando apenas o mais recente.

Respondendo a pergunta " Como posso ter o histórico exatamente como é antes de sair? "

Do jeito que eu vejo, isso pode ser útil apenas de vez em quando. (Caso contrário, por que você usaria a história?) Você pode fazer isso emitindo

history -c; history -r

Isso limpa todas as entradas de histórico mantidas atualmente na memória e, em seguida, relê todo o histórico do arquivo histórico. Portanto, todos os comandos que você emitiu desde o login na sessão atual do shell são esquecidos. Acho bastante útil em situações em que faço muitos testes (muitos comandos semelhantes, mas não são realmente duplicados) e, em seguida, não quero ter meu histórico roubado por isso - então eu tenho um alias para ele em meu .bashrc :

alias hrr='history -c; history -r'

( hrr deve ser lembrado como "releitura da história").

    
por 16.09.2011 / 10:29