Como o comando history funciona?

4

Quando eu digito qualquer comando no terminal, ele não aparece no meu arquivo ~/.bash_history até sair da minha sessão.

Além disso, quando edito manualmente meu arquivo ~/.bash_history (por exemplo, eu removo os três últimos comandos), quando digito history , ele ainda mostra os comandos que removi do arquivo ~/.bash_history . Somente quando saio da minha sessão e faço login novamente eles desaparecem.

Como meu arquivo ~/.bash_history e o comando history são sincronizados?

    
por sys0dm1n 06.09.2017 / 17:41

1 resposta

8

Quando você abre um terminal bash, ele carrega o conteúdo de ~/.bash_history e constrói o histórico do shell ativo (na RAM), adicionando todos os comandos executados nesse shell a ele - e somente a ele, não ao arquivo. / p>

Somente quando você fechar um terminal bash seu histórico será anexado ao seu arquivo ~/.bash_history .

Opções de history :

history -a # save the active shell's history to ~/.bash_history (appending)
history -c # clear the active shell's history
history -d NNN # delete row NNN of the active shell's history
history -r # reload the active shell's history from ~/.bash_history (appending)
history -w # save the active shell's history to ~/.bash_history (overwriting)

Opções para ~/.bashrc file

Se você quiser alterar esse comportamento para que o histórico temporário seja salvo em ~/.bash_history diretamente após a execução de um comando, adicione esta linha:

PROMPT_COMMAND="history -a"

Se você também deseja que cada terminal carregue automaticamente o arquivo ~/.bash_history após cada execução de comando, adicione esta linha:

PROMPT_COMMAND="history -a; history -c; history -r"

Se você quiser excluir determinados comandos (por exemplo, tudo começando com sudo e cat ) de serem salvos, adicione esta linha:

HISTIGNORE="sudo*:cat*"
    
por dessert 06.09.2017 / 17:56