Respostas:
Use a opção HIST_IGNORE_SPACE.
setopt HIST_IGNORE_SPACE
homem zshoptions
HIST_IGNORE_SPACE
Remova as linhas de comando da lista do histórico quando o primeiro caractere da linha for um espaço ou quando um dos aliases expandidos contiver um espaço à esquerda. Observe que o comando permanece no histórico interno até que o próximo comando seja inserido antes de desaparecer, permitindo reutilizar ou editar brevemente a linha. Se você deseja que ele desapareça imediatamente sem inserir outro comando, digite um espaço e pressione Enter.
kill -9 $$
é realmente fantástico evitar que todos os comandos emitidos na sessão atual do terminal sejam armazenados no histórico.
unset HISTFILE
antes do seu bloco de comandos. Você precisaria redefinir HISTFILE
posteriormente ou abrir um novo shell para manter os comandos em seu histórico que você deseja.
Se você deseja um controle mais granular sobre o que está agregado à história ZSH, você pode definir a zshaddhistory
função .zshrc
. A seguinte definição usa um regex para definir um padrão a ser ignorado:
function zshaddhistory() {
emulate -L zsh
if ! [[ "$1" =~ "(^ |^ykchalresp|--password)" ]] ; then
print -sr -- "${1%%$'\n'}"
fc -p
else
return 1
fi
}
Observe que o comportamento de man zshopts
baixo HIST_IGNORE_SPACE
ainda está presente:
Observe que o comando permanece no histórico interno até que o próximo comando seja inserido antes de desaparecer, permitindo reutilizar ou editar brevemente a linha.
Então, para testá-lo, você teria que obter um extra [Enter]
. Isso remove o comando da saída de history
e também do histórico da seta ↑.