Onde o zsh está armazenando minha história?

1

Eu tenho dois terminais abertos, ambos rodando zsh. As opções de histórico que defini atualmente são estas:

export HISTFILE=~/.histfile
export HISTSIZE=10000
export SAVEHIST=10000
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_EXPIRE_DUPS_FIRST
setopt HIST_SAVE_NO_DUPS
setopt APPEND_HISTORY
setopt EXTENDED_HISTORY

Quando digito history , ou fc -l , em qualquer terminal, vejo os últimos 16 comandos (numerados). Essas histórias são diferentes em cada shell e são diferentes do que vejo quando olho dentro de .histfile .

Tanto quanto eu posso dizer a partir da página man zshoptions , isso é de se esperar, e ao sair do shell, seus comandos serão anexados ao histórico.

Nesse caso, onde o histórico individual de cada terminal é armazenado até esse ponto?

    
por SauceCode 14.09.2015 / 15:30

1 resposta

1

A opção INC_APPEND_HISTORY , se configurada, causa uma gravação mais imediata das entradas do histórico. Observe também SHARE_HISTORY , que, se definido, pode fazer com que novos shells apareçam em algo que parece que você deseja remover do histórico. Reescrevendo o histórico ao vivo depende dessas opções, como se você não se importasse com outros comandos nessa instância específica do shell, e INC_APPEND_HISTORY não está definido, simplesmente destrua o histórico desse shell com fc -R :

% echo super secret password
super secret password
% echo whoopsie 
whoopsie
% history -2
18030  echo super secret password
18031  echo whoopsie
% fc -R $HISTFILE
% history -3
36060  vim ~/.zshrc
36061  man readpassphrase
36062  mutt
% 

Em seguida, confirme com $EDITOR $HISTFILE que a senha super secreta não está no arquivo de histórico (também! observe que pode haver uma função zshaddhistory (ou matriz de funções), caso em que você precisará inspecionar o que essa função (ou aquelas funções) faz (fazer)). Com INC_APPEND_HISTORY , a entrada provavelmente está em $HISTFILE , portanto, edite o arquivo de histórico para remover a entrada incorreta e, em seguida, fc -R $HISTFILE deve limpá-lo do arquivo de histórico e do shell. Com INC_APPEND_HISTORY e SHARE_HISTORY e se você suspeitar que novos shells capturaram essa entrada de histórico ruim, você precisará fazer fc -R em todos esses shells, ou fechá-los todos, verifique se nenhum deles escreveu a linha errada voltar para o arquivo de histórico, etc.

    
por 14.09.2015 / 16:54