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 HISTFILEantes do seu bloco de comandos. Você precisaria redefinir HISTFILEposteriormente 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 zshaddhistoryfunçã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 zshoptsbaixo HIST_IGNORE_SPACEainda 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 historye também do histórico da seta ↑.