Às vezes, quando executo comandos como rm -rf XYZ
, não quero que isso seja registrado no histórico do Bash, porque posso acidentalmente executar o mesmo comando novamente por reverse-i-search
. Existe uma boa maneira de evitar que isso aconteça?
93
bash
possa ser usado para escrever scripts de shell (portanto, programação), este aspecto particular não tem absolutamente nada a ver com programação (a história é uma coisa interativa apenas). Votando para fechar.Respostas:
Se você definiu a
HISTCONTROL
variável de ambiente paraignoreboth
(que geralmente é definida por padrão), os comandos com um caractere de espaço não serão armazenados no histórico (assim como duplicatas).Por exemplo:
Aqui está o que
man bash
diz:Veja também:
fonte
Em seu .bashrc / .bash_profile / onde você quiser, coloque
export HISTIGNORE=' *'
. Em seguida, basta iniciar qualquer comando que deseja ignorar com um espaço.fonte
HISTCONTROL
variável de ambiente, que não necessariamente temignorespace
definido.HISTCONTROL
contiverignorespace
, na verdade é apenas redundante incluir `*` emHISTIGNORE
. Os dois operam de forma independente.Uso ainda melhor
HISTIGNORE
. Isso permite que você especifique um conjunto de padrões a serem ignorados (comorm
). É melhor (eu acho) do que apenas enviar toda a história para/dev/null
.fonte
Eu sei que não é tão melhor quanto as respostas anteriores, mas isso vai matar o shell Bash atual sem salvar nada, útil quando HISTCONTROL não está configurado por padrão, você se esqueceu de configurá-lo, ou puro e simples você esqueceu de colocar um espaço inicial e você acabou de digitar algumas senhas e não quer que elas permaneçam permanentemente no histórico.
Esta é a maneira mais rápida, e algo como apagar o arquivo de histórico não é tão bom porque você precisa fazer isso fora de um shell de salvamento de histórico (faça login como um usuário diferente e use su / sudo, criando um trabalho em segundo plano, etc.)
fonte
Você pode fazer uma das duas coisas:
Ou comece o comando com um espaço.
fonte
ignorespace
definiu por padrão.HISTFILE
dessa forma evita o armazenamento de qualquer histórico e não impede que o comando seja adicionado ao histórico na memória.Ou
(semelhante à resposta anterior, apenas mais curta: export HISTFILE = / dev / null)
fonte
Na inicialização do shell, eu limpo explicitamente o histórico das entradas que não quero que estejam lá. Por exemplo, não quero nenhum
rm -rf
no histórico (é um trauma após a remoção de um diretório cheio de resultados processados durante a noite, apenas com um únicoArrow-Up
+Enter
:)Eu coloquei o seguinte trecho no meu arquivo init (funciona com
.zshrc
, também deve funcionar com.bashrc
)fonte