limpar script de histórico não está funcionando

0

Estou criando um script para ser executado na inicialização que diz:

_cleanthehistory ()
{
/bin/echo "cleaning the history"
history -c
}
_cleanthehistory

A transação aqui é que isso não funciona a partir do script, mas se eu executá-lo a partir da linha de comando funciona. Alguma ideia? Desde já, obrigado. Pablo.

    
por pma083 30.03.2012 / 19:55

2 respostas

1

Como eu disse no meu comentário, history -c apenas exclui o histórico da sessão atual, ou seja, apenas os comandos que seu script executou. Para limpar todos os dados, incluindo sessões antigas, você terá que fazer algo como

rm -f $HOME/.bash_history
    
por con-f-use 30.03.2012 / 20:17
0

O histórico está ativado apenas para shells interativos, não para scripts. Então, em um script, history -c não fará muito bem. Se você quiser apenas esvaziar o histórico bash de seu usuário durante a inicialização, como /tmp é esvaziado durante a inicialização, apenas trunque ou exclua ~/.bash_history .

echo "cleaning the history"
> /home/yourusername/.bash_history

Isso usa o redirecionamento de shell sem um comando. Isso faz com que o shell apenas abra o arquivo para gravação (truncando-o, se já existir), em seguida, feche-o sem escrever nada nele (já que não há nenhum comando para escrever nada nele).

Em uma nota lateral, não use caminhos absolutos para comandos em scripts. Por exemplo. use echo , não /bin/echo .

update : ou se você não quiser salvar o histórico bash, pode colocar algo como HISTFILE=/dev/null em seu ~/.bashrc .

    
por geirha 30.03.2012 / 20:28