

bashのHISTCONTROL、ignoredups/ignorespace/ignoreboothの違い
この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。
bashのHISTCONTROLまわりを整理したのでメモ。
HISTCONTROLに設定できる値
| 値 | 挙動 |
|---|---|
ignoredups |
直前のコマンドと同一の場合のみ履歴に記録しない |
ignorespace |
行頭にスペースを入れて実行したコマンドを履歴に記録しない |
ignoreboth |
上記2つを組み合わせたもの |
ignorebothはignorespace:ignoredupsと書くのと同じ。HISTCONTROLはコロン区切りで複数値を持てるので、ignorebothはそのショートカットという位置づけ。
設定方法
~/.bashrcあたりに書く。
export HISTCONTROL=ignorebothignoredupsの注意点
ignoredupsは「直前のコマンドと同じ」場合にしか効かない。履歴全体から重複コマンドを除去するわけではないので、
lscd /tmplsのように間に別のコマンドが挟まると、lsは2回とも記録される。履歴全体の重複を消したいなら別の仕組み(history | sort | uniq的なポストプロセス)が要る。
近いオプション: HISTIGNORE
特定のコマンド自体を履歴から除外したい場合はHISTIGNOREを使う。
export HISTIGNORE="ls:cd:pwd:exit"こちらはコマンド名のパターンマッチで除外する仕組みなので、HISTCONTROLとは役割が違う(HISTCONTROLは記録条件、HISTIGNOREは記録対象そのものの除外)。