history erase script de shell não está funcionando

1

Estou criando um script shell que apaga o histórico de comandos no terminal. Mas o script não apaga o histórico de comandos no terminal. Eu sigo o procedimento abaixo 1. Meu script contém as seguintes linhas

#!/bin/bash
history -c

2. Eu mudei o arquivo para ser executável

chmod +x foo.sh

3. Eu corro o script

./foo.sh

mas o script não está funcionando & amp; não apagando minha história de comandos. Por quê?

Atualização: Eu, alternativamente, escrevo um script para limpar a história. Ainda ocorre o mesmo problema. Meu script alternativo é

#!/bin/bash
# Bash Shell store history in the file ~/.bashrc
rm -r ~/.bash_history

Este também não é um histórico claro de comandos.

    
por Buvanesh Kumar 25.07.2015 / 09:05

2 respostas

3

  • rm -f ~/.bash_history (não use -r !) removerá o log do histórico, que na configuração padrão da maioria das distros é lido quando você inicia um novo shell. Fazer isso, portanto, afetará apenas os shells que você iniciar após executar este comando. Você pode substituir seu shell atual por outro executando exec "$SHELL" para evitar a criação de uma nova janela de terminal.
  • history -c limpa o histórico do shell atual e não exclui ~/.bash_history . Mas quando você executa um script o shell atual cria um novo shell para executar o script em e sai desse shell quando o script é feito . Em vez disso, para executar um script no shell atual , você precisa source . foo.sh .
por l0b0 25.07.2015 / 11:17
1

Se você quiser "limpar nossos rastreamentos" depois de sair do shell, talvez queira executar esses comandos a partir do script de logout, que é o arquivo ~/.bash_logout .

Talvez você não queira que seu histórico de comandos seja salvo. Nesse caso, você pode definir HISTFILESIZE=0 (no arquivo ~/.profile ou no shell que está usando).

Veja também: link

    
por lemonslice 25.07.2015 / 12:51