Eu achava que excluir meu histórico do bash era suficiente para limpar o meu histórico do bash, mas ontem meu gato estava mexendo no lado direito do teclado e, quando voltei para o computador, vi algo que digitei um mês atrás, e comecei a pressione todas as teclas como um louco procurando o que poderia ter causado isso. Acontece que a tecla UPARROW mostra meu histórico do bash, mesmo depois de excluir .bash_history.
Como posso excluir meu histórico do bash de verdade?
~/.bash_history
realmente exclui~/.bash_history
.... mas (a menos que você tomar medidas para impedi-lo, como limpar o histórico na memória executandohistory -c
um pouco antes de sair ou ajusteHISTFILE=/dev/null
ou apenasunset
ing-lo) o bash irá apenas salvar sua história atual novamente quando ele sai . BTW, oHISTSIZE
env var informa ao bash quantas linhas do histórico manter na memória eHISTFILESIZE
informa ao bash o número máximo de linhas do histórico a serem salvas. ambos podem ser configurados, por exemplo, no seu~/.bashrc
. PS: o seu gato merece uma segunda recompensa para ensinar-lhe uma lição valiosa :)Respostas:
Em alguns casos (algumas versões do bash), fazendo um:
Ou simplesmente
Limpará o histórico na memória (as setas para cima e para baixo não terão comandos para listar) e, em seguida, gravará isso no
$HISTFILE
arquivo (se$HISTFILE
for truncado pela instância do bash em execução).Às vezes, o bash escolhe não truncar o
$HISTFILE
arquivo, mesmo com ahistappend
opção desabilitada e$HISFILEZIZE
definida como 0.Nesses casos, a opção nuke sempre funciona:
Isso limpa a lista de histórico de comandos gravados na memória e todos os comandos previamente gravados em arquivo. Isso garantirá que o shell em execução não tenha histórico gravado na memória ou no disco; no entanto, outras instâncias em execução do bash (onde o histórico está ativo) podem ter uma cópia completa dos comandos lidos
$HISTFILE
quando o bash foi iniciado (ou quando ahistory -r
é executado) .Se também for necessário que nada mais (sem novos comandos) da presente sessão seja gravado no arquivo de histórico,
unset HISTFILE
impedirá esse registro.fonte
history -c && history -r
substituiria seu histórico atual pelo histórico modificado manualmente. Em alguns casos, isso pode ser melhor do que jogar toda a história fora.bash
tem um histórico de sessão na memória que é gravado no arquivo se a variável shellHISTFILE
estiver definida como um nome de arquivo quandobash
sair.Se você excluir o arquivo apontado por
HISTFILE
, desmarque essa variável e saiabash
, a sessão do shell não deixará nenhum histórico persistente.Falha ao desarmar a
HISTFILE
variável e excluir o arquivo apenas esvaziaria o histórico persistente, mas o histórico da sessão atual seria salvo quando o shell sair.fonte
history -c; history -w
limpará a memória e o histórico de arquivos. A desabilitação do HISTFILE será necessária apenas se nenhum comando adicional for registrado no histórico (não exatamente o que foi solicitado ao IMhO)."Como posso excluir meu histórico do bash de verdade?"
Saia do bash, inicie um shell diferente, exclua o arquivo de histórico do bash.
ou
sair, faça login em uma conta diferente que tenha permissão de gravação no arquivo de histórico, exclua o arquivo de histórico.
fonte
Ao sair da concha, faça tudo de uma vez, como
fonte