Como eu fecho um terminal sem salvar o histórico?

33

Mais de uma vez, eu acidentalmente executei vários comandos e polui meu histórico bash. Como faço para fechar meu terminal sem salvar meu histórico de bash? Estou usando o Fedora.

    
por Michael Mrozek 21.11.2011 / 01:19

6 respostas

25

O histórico do seu shell é salvo no arquivo indicado pela variável HISTFILE . Então:

unset HISTFILE

Isso também se aplica a zsh, mas não ao ksh, que continua salvando no arquivo indicado por $HISTFILE quando o shell é iniciado (e, inversamente, você decide salvar seu histórico em ksh depois de iniciar o shell). / p>     

por 21.11.2011 / 01:39
31

Resposta curta:

Digite isto no prompt:

$ kill -9 $$

Isso matará seu shell imediatamente, sem que o shell possa fazer qualquer coisa , como capturar o sinal, salvar histórico, executar ~/.bash_logout , avisar sobre os trabalhos interrompidos ou qualquer outra coisa boa .

Resposta longa:

Observação: essas opções não são não mutuamente exclusivas; eles podem ser todos usados ao mesmo tempo.

Opção 1:

Se você é um perfeccionista quando se trata de encher o seu arquivo de histórico, então o que você pode fazer é modificar a variável HISTIGNORE para incluir grupos de comandos que você não deseja que sejam gravados. Por exemplo, se você adicionar HISTIGNORE='ls*:cd*' ao seu ~/.bashrc , todas as instâncias de ls e cd não serão inseridas em seu arquivo de histórico.

Opção 2:

Se você quiser controlar comandos por comando que são deixados de fora do seu histórico, você pode definir HISTCONTROL='ignorespace' , o que omite qualquer linha de comando que comece com um espaço. Usar ignoreboth também omitirá linhas repetidas. Em seguida, pressionar a barra de espaço antes de digitar um comando fará com que ele não apareça no seu arquivo de histórico.

Opção 3:

Se você quiser apenas fazer isso quando fechar o terminal, o shell sairá imediatamente, você pode trap do sinal que o programa do terminal envia ao shell ( xterm , por exemplo, envia SIGHUP e aguarda o shell para sair) e fazer sair sem salvar o histórico quando recebe este sinal. Adicione isto ao seu ~/.bashrc :

# don't record history when the window is closed
trap 'unset HISTFILE; exit' SIGHUP
    
por 21.11.2011 / 02:51
3

Estou surpreso em ver que ninguém sugeriu history -c imediatamente antes de exit . IINM (eu não sou especialista) que vai fazer bem.

    
por 21.11.2011 / 04:40
2

Existem duas variáveis de ambiente que o bash usa para determinar o arquivo de histórico e quantas linhas gravar nele quando o shell sai.

Você pode jogar fora o histórico da sua sessão com qualquer um destes (definido durante a sessão que você deseja omitir do arquivo histórico):

HISTFILE=/dev/null

ou

HISTSIZE=0

Qualquer um destes funciona bem no Bash no Fedora

    
por 21.11.2011 / 01:41
1

Não sei por que você se importa tanto com o histórico de comandos. Se você precisar de determinados comandos com frequência, poderá se divertir mais se definir aliases para eles, de modo que possa recuperá-los com dois toques no teclado, em vez de precisar procurá-los no histórico.

    
por 21.11.2011 / 10:49
0
  1. Eli já deu a resposta correta para o Bash, que deve definir HISTSIZE=0 .

  2. Gostaria apenas de adicionar o método para fazer isso para tela GNU . Pressione Ctrl+A (seqüência de escape da tela) seguido por :scrollback 0 . Isso excluirá o histórico de rolagem reversa. Agora você pode fazer :scrollback 15000 imediatamente para redefinir o tamanho do buffer de rolagem para trás.

por 21.11.2011 / 03:42