Como parar o histórico anexando o Bash

9

Estou tendo muitos problemas para configurar o histórico do terminal do Bash da maneira que desejo. Eu gostaria de não ter entradas duplicadas e se eu inserir um comando, quero que ele seja salvo e as duplicatas acima removidas.

O problema é que o historycomando me mostra que está funcionando da maneira que desejo, mas depois que eu sair, as duplicatas voltam novamente. Eu acredito que é apenas anexar a história à existente. Eu tenho estas linhas no meu .bashrcarquivo:

HISTCONTROL=ignoreboth:erasedups
shopt -u histappend

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

craig
fonte
2
Há uma boa explicação aqui: unix.stackexchange.com/questions/18212/…
jasonwryan

Respostas:

7

Você erasedupsdeve fazer o que deseja em relação às duplicatas - observe que a exclusã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 as mais recentes.


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

Do meu ponto de vista, isso pode ser útil apenas de vez em quando. (Caso contrário, por que você usaria o histórico?) Você pode fazer isso emitindo

history -c; history -r

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

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

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

rozcietrzewiacz
fonte