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 bashSe 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 historye set -o historypara alternar frente e para trás quando eu estou fazendo coisas secretas;)
unset HISTFILEnão funciona. set -/+o historyFunciona 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 -climpar todo o histórico de comandos.
Certifique-se de que HISTCONTROLcontém ignorespace. Você provavelmente desejará adicionar HISTCONTROL=ignorespace( HISTCONTROL=ignoredups:ignorespaceou 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/nullfunciona com o mesmo efeito. Entenda que os comandos ainda estão sendo gravados na lista de memórias, tente o historycomando 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 historynão será suficiente para a maioria de nós.
HISTIGNORE, que subsumesa 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_historyarquivo.
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 pwdcomando 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)
HISTFILEsó é 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 historyfunciona como indicado.