zshは私の記録をどこに保存しますか?

zshは私の記録をどこに保存しますか?

zshを実行している2つの端末を開きました。私の現在の履歴オプションセットは次のとおりです。

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

historyを入力するか、端末にを入力すると、fc -l最後の16個のコマンド(番号が付いています)が表示されます。これらの履歴は両方のシェルで異なり、両方とも私が内部で見たものとは異なりました.histfile

man zshoptionsページからわかる限り、これはシェルを終了した後にそのコマンドが履歴に追加されると予想されます。

この場合、その時点までの各端末の個人履歴はどこに保存されますか?

答え1

このINC_APPEND_HISTORYオプションを設定すると、履歴項目はすぐに記録されます。また、SHARE_HISTORYこの値を設定すると、新しいシェルが履歴から削除したいのと同じように聞こえる項目を選択できます。即時記録の書き換えは、これらのオプションによって異なります。シェルの特定のインスタンスで他のコマンドに興味がないように設定を解除し、INC_APPEND_HISTORY次を使用してそのシェルの履歴を削除します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
% 

次に、$EDITOR $HISTFILE超パスワードが履歴ファイルにないことを確認します(また、!機能(または機能の配列)がある可能性があります。zshaddhistoryその場合、その機能(またはその機能)が実際に実行していることを確認する必要があります)。を使用すると、アイテムがINC_APPEND_HISTORYにある可能性があるため、履歴ファイルを編集して誤った$HISTFILEアイテムを削除し、履歴ファイルとシェルからそのアイテムを消去する必要がfc -R $HISTFILEあります。新しいシェルが間違った履歴エントリをキャプチャしたと思われる場合は、すべてのシェルでアクションを実行するか、すべて閉じて、間違った行が履歴ファイルに書き戻されないことをINC_APPEND_HISTORY確認する必要があります。SHARE_HISTORYfc -R

関連情報