Zshのコマンド履歴


61

Zshはコマンド履歴をどのように追跡しますか?

ホームディレクトリに2つのファイルがあります:.zhistory.zsh_history。それらの違いは何ですか?ファイルには私の履歴がすべて含まれいるようです。Zshはそれらの1つに行を永久に追加し続けますか?履歴検索が遅くなりすぎないでしょうか?

これらのファイルを別の場所へのシンボリックリンクに安全に作成できますか?(たとえば、履歴への変更を追跡するgitリポジトリ)


~/.zshrcおよび/または/etc/zshrcそこに記載されているオプションを確認してくださいzsh.sourceforge.net/Guide/zshguide02.html#l17
UVV

回答:


78

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は既存のファイルに追加します。
    これらの設定の下でも、zshは、以下に説明するようにファイルを上書きしてサイズを小さくすることがあります。
  • それ以外の場合、オプションhist_save_by_copyが設定されている場合(zsh 5.0以降はデフォルトで設定されますが、4.2には存在しません)、zshは一時ファイルを書き込み、完了時にその場所に移動します。この場合、履歴ファイルがシンボリックリンクであった場合、新しいファイルがシンボリックリンクを置き換えます。
  • それ以外の場合、zshは既存のファイルを上書きします。

zshがシンボリックリンクを指すのではなくHISTFILE、履歴ファイルを配置したい場所に設定します。

保持される履歴の行数は、変数HISTSIZEおよび によって設定されますSAVEHISTHISTSIZEセッションに保持されるSAVEHIST最大行数であり、履歴ファイルに保持される最大行数です。

いくつかの履歴を保存するには、HISTFILEとの両方を設定する必要がありSAVEHISTます。デフォルト値SAVEHISTは0です。増加HISTSIZEさせることもできます(zsh 5.0では、デフォルトは30のみです)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.