Mais de uma vez, acidentalmente, executei vários comandos e poluí meu histórico do bash. Como fecho meu terminal sem salvar meu histórico do bash? Estou usando o Fedora.
Mais de uma vez, acidentalmente, executei vários comandos e poluí meu histórico do bash. Como fecho meu terminal sem salvar meu histórico do bash? Estou usando o Fedora.
Respostas:
O histórico do seu shell é salvo no arquivo indicado pela HISTFILE
variável Tão:
unset HISTFILE
Isso também se aplica ao 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 no ksh depois de iniciar o shell).
Resposta curta:
Digite isso no prompt:
$ kill -9 $$
Isso matará seu shell imediatamente, sem que ele possa fazer algo como interceptar o sinal, salvar histórico, executar ~/.bash_logout
, alertar sobre trabalhos interrompidos ou qualquer coisa boa.
Resposta longa:
Nota: Essas opções não são mutuamente exclusivas; eles podem ser usados de uma só vez.
Opção 1:
Se você é um perfeccionista quando se trata de bagunçar seu arquivo de histórico, o que você pode fazer é modificar a HISTIGNORE
variável para incluir vários comandos que você não deseja gravar. Por exemplo, se você adicionar HISTIGNORE='ls*:cd*'
à sua ~/.bashrc
instância, qualquer instância ls
e cd
não será inserida no seu arquivo de histórico.
Opção 2:
Se você deseja controlar, comando por comando, quais comandos são deixados de fora do seu histórico, é possível definir HISTCONTROL='ignorespace'
quais omitirão as linhas de comando que começam com um espaço. O uso ignoreboth
também omitirá as linhas repetidas. Em seguida, pressionar a barra de espaço antes de inserir um comando fará com que ele não seja exibido no seu arquivo de histórico.
Opção 3:
Se você quiser fazê-lo assim que fechar o terminal, o shell sai imediatamente, você pode trap
sinalizar que o programa do terminal envia o shell ( xterm
por exemplo, envia SIGHUP
e aguarda a saída do shell) e sair sem salvar o histórico quando recebe este sinal. Adicione isso ao seu ~/.bashrc
:
# don't record history when the window is closed
trap 'unset HISTFILE; exit' SIGHUP
kill -9
para qualquer coisa, exceto situações terríveis em que tudo mais falhou.
Estou surpreso ao ver que ninguém sugeriu history -c
imediatamente antes exit
. IINM (não sou especialista) que fará bem.
history -r
irá reler o arquivo do histórico, para que o salvamento se torne um não operacional.
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 sair.
Você pode jogar fora o histórico da sua sessão com um destes (definido durante a sessão que deseja omitir do seu arquivo de histórico):
HISTFILE=/dev/null
ou
HISTSIZE=0
Qualquer um desses funciona bem no Bash no Fedora
Não sei por que você se importa tanto com seu histórico de comandos. Se você precisar de determinados comandos com frequência, poderá se divertir mais se definir aliases para eles, para recuperá-los com duas teclas pressionadas, em vez de precisar procurá-los no histórico.
Eli já deu a resposta correta para o Bash, que deve ser definida HISTSIZE=0
.
Eu apenas adicionaria o método para fazê-lo na tela GNU . Pressione Ctrl+A
(sequência de escape da tela) seguida por :scrollback 0
. Isso excluirá o histórico de rolagem para trás. Agora você pode fazer imediatamente :scrollback 15000
para redefinir o tamanho do buffer de rolagem para trás.
screen(1)
?
scrollback=0
.
Ctrl+a H
nem Ctrl+a :clear
irá remover história. Você precisa Ctrl+a :scrollback 0
. Você pode testar você mesmo. Inicie uma nova sessão de tela. Agora faça um cat /etc/passwd
. Agora, execute um dos procedimentos acima - Ctrl+a H
ou Ctrl+a :clear
. Agora, tente copiar do buffer de tela, donig a Ctrl+a [
seguido pela seta para cima para subir e ver até onde você pode copiar. Se você fez um Ctrl+a :scrollback
seguido de a clear
, você iria apenas até onde pode ver na janela atual, pois não haverá buffer de rolagem.
set HISTFILE
próxima vez que fizer login? (apenas dizer se isso é correto ou incorreto)