zsh の履歴関係オプションの備忘録

Photo by hyt.

zsh の履歴関係オプションの備忘録です.

zsh の履歴が気がつくとものすごく大量になってきたのと,これは履歴に残しておかなくても良いよなぁ……というものがたくさんあったので,この辺りを整理するオプションについて調べたことをメモしておきます.ただし,私の使ってるものだけ.

なお,zsh のオプション全体については,

をご覧ください.たくさんあり過ぎて心が折れます.正直言って.

既設定されている履歴関係オプション

私の場合は zprezto を使っているので,事前に設定されているオプションを調べておきます.

調べ方は

です.特に履歴関係で設定されているオプションは以下のようです.

新たに設定した履歴関係オプション

新たに設定したオプションは以下の通りです.

なお,私の場合は zprezto を使っているので,これに標準で設定されているオプションは省いています.

履歴関係オプションの備考
  • APPEND_HISTORY
    複数の zsh が実行されているとき,履歴としてファイルに残されるのは最後に終了したシェルのものだけなのを(終了順に置き換えが実行される),終了順に追加していく方式に変更する.INC_APPEND_HISTORY も同様の機能を持つが,違いは履歴ファイルにすぐに記録されるのか,終了時に記録されるかの違いらしい.
  • HIST_IGNORE_DUPS
    HIST_IGNORE_ALL_DUPS と違い,直前のものと全く同じコマンドの場合だけ重複排除される.だから,HIST_IGNORE_ALL_DUPS が設定されている場合はこのオプションは意味がない.
  • HIST_EXPIRE_DUPS_FIRST
    履歴の保存上限に達したとき,まず重複排除が行われ,そのあと古い方から履歴の削除が行われる.つまり,上限到達後は HIST_IGNORE_ALL_DUPS と全く同じ動作になるということ.
  • HIST_LEX_WORDS
    zsh の場合,履歴は,たとえ quote されていたとしても空白のところで単語が区切られて処理されるが,このオプションを設定すると通常のシェルと同様の取扱ができるようになる.しかし,大量の履歴がある場合,処理速度に問題が生じる場合がある.
  • INC_APPEND_HISTORY
    SHARE_HISTORY の一部動作と同等なので,同時に setopt されるべきではない.
まとめ

どうも zprezto を使っている場合は余分な履歴がかなりの程度排除されるような設定になってるっぽいです.したがって出来る対策としては,上記の通りあとちょっとだけ不要な部分を削除するオプションを設定することと,履歴に入れたくないコマンドについては先頭にスペースを付加して実行する癖をつけることのようです.

なお,よく実行するコマンドで履歴に入れたくないものは,alias に先頭スペース付きで登録しておくってのが賢そう.例えば man コマンドを履歴に入れたくないなら

のようにエイリアスを知ておけば良い訳ですね.

あとはたまに .zhistory から不要なものを削除するしか無さそうな感じでしょうか.

以上!

スポンサーリンク
large rectangle advertisement
スポンサーリンク
large rectangle advertisement