Existe uma maneira de suspender temporariamente o rastreamento de histórico no bash, para entrar em uma espécie de modo "anônimo"? Estou inserindo coisas no meu terminal que não quero informações financeiras confidenciais registradas.
Existe uma maneira de suspender temporariamente o rastreamento de histórico no bash, para entrar em uma espécie de modo "anônimo"? Estou inserindo coisas no meu terminal que não quero informações financeiras confidenciais registradas.
Respostas:
Deve ser o que você está procurando:
unset HISTFILE
man bash
Se HISTFILE estiver desabilitado ou se o arquivo do histórico for gravável, o histórico não será salvo.
Como alternativa, se você deseja desativá-lo e ligá-lo novamente, pode ser mais fácil usar set
:
set +o history
set -o history
set +o history
e set -o history
para alternar frente e para trás quando eu estou fazendo coisas secretas;)
unset HISTFILE
não funciona. set -/+o history
Funciona como um encanto! graças
Usando o bash, defina HISTCONTROL="ignorespace"
e anteceda com espaço qualquer comando que você não deseja que seja gravado no histórico. Caso você tenha esquecido de tomar alguma medida, também há history -d <number>
para excluir uma entrada específica ou history -c
limpar todo o histórico de comandos.
Certifique-se de que HISTCONTROL
contém ignorespace
. Você provavelmente desejará adicionar HISTCONTROL=ignorespace
( HISTCONTROL=ignoredups:ignorespace
ou algo assim) ao seu ~/.bashrc
. Em seguida, qualquer linha de comando que comece com um espaço é omitida do histórico.
Outra possibilidade é iniciar uma nova sessão do bash que não salve seu histórico.
$ bash
$ unset HISTFILE
$ sooper-sekret-command
$ exit
$ #back in the parent shell
Se você precisar evitar o armazenamento de vários comandos e ainda quiser usar a seta para cima para acessar os comandos anteriores, use:
$ bash # open a new session.
$ unset HISTFILE # avoid recording commands to file.
$ commands not recorded
.
.
$ exit
$
Existem quatro maneiras (níveis) de controlar como os comandos são armazenados.
A primeira e mais simples é usar ignorespace
(ou ignorar):
$ HISTCONTROL="ignorespace${HISTCONTROL:+:$HISTCONTROL}"
Isso permitirá usar um espaço antes dos comandos que você deseja evitar serem gravados na lista de memórias de history
. E, consequentemente, como não há nenhum comando gravado na memória que possa ser enviado ao arquivo, também evitará que um comando seja enviado ao arquivo listado em $HISFILE
.
Evite gravar comandos no arquivo em $HISTFILE
:
$ unset HISTFILE
Se não estiver definido, o histórico do comando não será salvo quando um shell sair.
Nulo HISTFILE=''
e / ou definido para HISTFILE=/dev/null
funciona com o mesmo efeito. Entenda que os comandos ainda estão sendo gravados na lista de memórias, tente o history
comando ou a seta para cima.
Aviso: se HISTFILE for redefinido antes que o shell exista, tudo o que foi gravado na memória poderá ser gravado no arquivo de qualquer maneira.
Evite gravar novos comandos na lista de histórico na memória. E, como não está na memória, não pode ser gravado em arquivo.
$ shopt -ou history # or set +o history
Reativar com shopt -os history
(ou set -o history
)
Remova todos os comandos da lista de histórico na memória:
$ HISTSIZE=0
Todos os comandos são apagados (da memória) e, portanto, nada pode ser armazenado no arquivo, é claro, até que a variável seja configurada novamente com algum valor numérico válido.
man history
não será suficiente para a maioria de nós.
HISTIGNORE
, que subsumes
a função de HISTCONTROL
.
LESS=+'/^ *HISTI' man bash
(não são as "páginas de manual"?). @NathanBasanese
Há uma maneira simples de desativar o histórico, para que os comandos não sejam armazenados no .bash_history
arquivo.
Você deve colocar o espaço em branco ou espaço de tabulação na frente de qualquer comando, para que o comando não seja armazenado no histórico. Por exemplo:
$ ls
print the list of file
$ history
ls
history
$ pwd
print the current working directory
$ history
ls
history
O pwd
comando não será armazenado no histórico, porque possui um espaço em branco na frente.
export HISTFILE=/dev/null
Esse é o meu caminho. Caso o HISTORY / HISTFILE / HISTCONTROL, etc ... não funcione, exportá-lo para / dev / null sempre funcionou para mim.
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)
HISTFILE
só é verificado quando o bash é encerrado, portanto, o primeiro método não funciona como está (se você restaurar o valor, o comando será salvo).set +o history
funciona como indicado.