Redefinir histórico dentro de um script bash [duplicado]

1

Eu quero fazer um script bash que limpe o histórico, ou seja, funciona de maneira semelhante ao comando

history -c

Então comecei com o seguinte código: -

#!/bin/bash
history     #displaying history
history -c  #clearing history

Nenhum deles funcionou. Em algumas pesquisas, vim a saber que o bash desativa o histórico em shells não interativos por padrão, mas podemos ativá-lo. Então, depois de editar, tentei o seguinte código: -

#!/bin/bash
HISTFILE=~/.bash_history   # Or wherever you bash history file lives
set -o history             # enable history
history
history -c

Mostra a saída: -

[root@localhost lib]# bash a.sh
1  history
[root@localhost lib]#

E além disso, o comando hisory -c não funcionou. Porque ainda estou recebendo o histórico de comandos quando digito histórico. Isso significa que o histórico e o histórico -c não funcionaram no script bash.

Como devemos usá-lo então?

EDIT 1 - Eu quero excluir o histórico da sessão atual, ele deve ser armazenado em algum lugar. Eu tentei usar comandos como o seguinte, mas sem efeito: -

cat /dev/null > ~/.bash_history && history -c && exit


cat /dev/null > ~/.bash_history

P.S. - Esta não é uma questão duplicada. Por favor, tente entender a diferença antes de marcá-la como duplicada. Eu quero limpar o histórico da sessão atual através de um script. Eu não me importo se está escrito de volta ou o que seja. A outra questão está prestes a excluir permanentemente o histórico. Não tem nada a ver com o script ou através de outro terminal.

    
por Dhruv Chandhok 15.09.2014 / 12:08

2 respostas

1

Você não pode excluir um histórico como este, pois ele excluirá o histórico da sessão atual.

Se você quiser limpar seu histórico usando o script, use o seguinte comando em seu script

> ~/.bash_history

É o suficiente para limpar todo o seu histórico bash.

    
por g_p 15.09.2014 / 12:29
0

Eu acho que

history -c 

só limpará o histórico dentro da seção associada ao script Este exemplo:

#!/bin/bash
HISTFILE=~/.bash_history   # Or wherever you bash history file lives
set -o history             # enable history
uname -a > /dev/null
history
history -c
history

mostra a saída:

....
500  history
501  uname -a > /dev/null
502  history
4  history

que é o que se espera.

Se você quiser apagar o histórico, tente

> $HISTFILE
    
por Gremlin 15.09.2014 / 12:25