Zshはコマンド履歴をどのように追跡しますか?
ホームディレクトリに2つのファイルがあります:.zhistory
と.zsh_history
。それらの違いは何ですか?ファイルには私の履歴がすべて含まれているようです。Zshはそれらの1つに行を永久に追加し続けますか?履歴検索が遅くなりすぎないでしょうか?
これらのファイルを別の場所へのシンボリックリンクに安全に作成できますか?(たとえば、履歴への変更を追跡するgitリポジトリ)
Zshはコマンド履歴をどのように追跡しますか?
ホームディレクトリに2つのファイルがあります:.zhistory
と.zsh_history
。それらの違いは何ですか?ファイルには私の履歴がすべて含まれているようです。Zshはそれらの1つに行を永久に追加し続けますか?履歴検索が遅くなりすぎないでしょうか?
これらのファイルを別の場所へのシンボリックリンクに安全に作成できますか?(たとえば、履歴への変更を追跡するgitリポジトリ)
回答:
Zshは、変数によって示されるファイルに入力行(おそらく時間情報を含む)を格納しますHISTFILE
。これは絶対ファイル名である必要があります(そうでない場合は、その時点で現在のディレクトリに関連して解釈されます)。
Zshには組み込みのデフォルト値はありませんHISTFILE
。zshディストリビューションには、新しいユーザー向けのセットアップウィザードが付属しています。このウィザードには値が~/.histfile
組み込まれているため、これはzshユーザーがデフォルトで取得するものです。Oh-my-zshにはHISTFILE=.zhistory
プリセットが付属しています。だから、デフォルトのセットアップとoh-my-zshの両方でzshを試したようです。.zshrc
(またはファイルの日付)をチェックして、現在使用しているものを確認してください。
zshがファイルを開く方法、およびそれがシンボリックリンクである場合の動作は、いくつかのオプションに依存します。
append_history
(デフォルトで設定)、inc_append_history
または設定されている場合、 またはshare_history
で明示的に履歴が保存されているfc -AI
場合、zshは既存のファイルに追加します。hist_save_by_copy
が設定されている場合(zsh 5.0以降はデフォルトで設定されますが、4.2には存在しません)、zshは一時ファイルを書き込み、完了時にその場所に移動します。この場合、履歴ファイルがシンボリックリンクであった場合、新しいファイルがシンボリックリンクを置き換えます。zshがシンボリックリンクを指すのではなくHISTFILE
、履歴ファイルを配置したい場所に設定します。
保持される履歴の行数は、変数HISTSIZE
および によって設定されますSAVEHIST
。HISTSIZE
セッションに保持されるSAVEHIST
最大行数であり、履歴ファイルに保持される最大行数です。
いくつかの履歴を保存するには、HISTFILE
との両方を設定する必要がありSAVEHIST
ます。デフォルト値SAVEHIST
は0です。増加HISTSIZE
させることもできます(zsh 5.0では、デフォルトは30のみです)。
~/.zshrc
および/または/etc/zshrc
そこに記載されているオプションを確認してくださいzsh.sourceforge.net/Guide/zshguide02.html#l17