Excluir histórico de terminal no Linux [fechado]

170

Ao usar a tecla para cima em um terminal Linux, você pode usar os comandos anteriores novamente. Ótimo recurso. No entanto, comecei a registrar o mysql no mysql com os detalhes confidenciais no comando.

Como posso excluir esse histórico?

Frank Vilea
fonte
Desculpe, esqueci completamente de mencionar que estou usando o bash.
24511 Frank Vilea
16
Como esta pergunta está encerrada, não posso adicioná-la como resposta. Você pode dizer ao bash para não salvar nenhum histórico para uma sessão específica com este comando:export HISTFILE=/dev/null
Chris Eberle
1
Eu também pode acrescentar o seguinte: não inserir informações sensíveis a linha de comando - espera para prompt: D
Colibri

Respostas:

343

Você pode limpar seu histórico do bash assim:

history -cw

Eddie
fonte
4
Realmente como esta resposta - isso entra em vigor imediatamente, em vez de excluir, o .bash_historyque requer que o shell seja reiniciado para entrar em vigor.
Mikemaccana # 11/14
1
Não funciona na minha máquina Ubuntu 14.04. A história apenas aparece com o novo terminal. Tudo o que funcionou é >~/bash_history. Tem que reiniciar o terminal para isso embora.
Aniket Thakur
Também funciona em Mac OS X El Capitan (testado na versão 10.11.2), mas você tem que acrescentar que seguinte linha ao seu ~/.bash_profile: export SHELL_SESSION_HISTORY=0, em seguida, fazer um source ~/.bash_profilee ao fim sair e reiniciar o aplicativo Terminal. Se você quiser entender o que esse comando de exportação faz, verifique definitivamente este link: superuser.com/questions/950403/…
King-Wizard
1
não é apenas -c suficiente? Os manuais dizem que -c limpa a lista de histórico excluindo todas as entradas. -w grava o histórico atual no arquivo de histórico e anexa-o à lista de histórico. Apenas -c funciona bem.
Kahn
24

Se você usar o bash, o histórico do terminal será salvo em um arquivo chamado .bash_history. Exclua e o histórico desaparecerá.

No entanto, para o MySQL, a melhor abordagem é não digitar a senha na linha de comando. Se você apenas especificar a opção -p, sem um valor, será solicitada a senha e ela não será registrada.

Outra opção, se você não quiser inserir sua senha todas as vezes, é armazená-la em um arquivo my.cnf. Crie um arquivo chamado ~ / .my.cnf com algo como:

[client]
user = <username>
password = <password>

Certifique-se de alterar as permissões do arquivo para que somente você possa ler o arquivo.

Obviamente, dessa maneira, sua senha ainda será salva em um arquivo de texto sem formatação no diretório inicial, exatamente como foi salvo anteriormente em .bash_history.

sagi
fonte
4
+1 para especificar -p. Isso é totalmente a abordagem correta para este problema
andyb
2
Na verdade, no meu sistema Linux, o bash lembra o histórico e recria o arquivo no logout. Você precisaria efetuar login, excluir o arquivo, efetuar login novamente, sair do primeiro shell, excluir o arquivo e, em seguida, sair do segundo shell.
cHao 15/07
Obrigado por apontar isso. Eu pensei que estava sendo inteligente usando a opção -p + password diretamente no comando, porque era muito mais rápido pressionar a seta para cima, pois eu tenho uma senha muito longa. Tempo para reconsiderar ..
Frank Vilea
5
Não esqueça para unset HISTFILEque o histórico atual não seja salvo.
Ignacio Vazquez-Abrams
Editei minha resposta e adicionei uma solução que impede a inserção da senha todas as vezes.
sagi 15/07/11