historyで確認できるコマンド履歴上に重複するコマンド履歴がある場合、実行したコマンドを履歴に残さない方法があります。
本資料は、この設定に使用する環境変数HISTCONTROLの設定方法について記述しています。
なお、bashを使用して動作確認を行いました。
sakura@ubuntu:~$ LANG=C bash --version GNU bash, version 4.2.25(1)-release (i686-pc-linux-gnu) <snip>
環境変数HISTCONTROLに関する記事は以下のリンクを参照してください。
最初に書いたとおり、コマンド履歴上に同一のコマンドがあった場合、履歴対象となりません。
1回のみの履歴保存となります。
設定方法は以下の通りです。
export HISTCONTROL=erasedups
HISTCONTROLについてmanコマンドを実行してマニュアルを見てみます。
$ man bash
<snip>
HISTCONTROL
A colon-separated list of values controlling how commands are
saved on the history list. If the list of values includes
ignorespace, lines which begin with a space character are not
saved in the history list. A value of ignoredups causes lines
matching the previous history entry to not be saved. A value of
ignoreboth is shorthand for ignorespace and ignoredups. A value
of erasedups causes all previous lines matching the current line
to be removed from the history list before that line is saved.
Any value not in the above list is ignored. If HISTCONTROL is
unset, or does not include a valid value, all lines read by the
shell parser are saved on the history list, subject to the value
of HISTIGNORE. The second and subsequent lines of a multi-line
compound command are not tested, and are added to the history
regardless of the value of HISTCONTROL.
<snip>
上記の出力からわかるように以下のように記されています。
A value of erasedups causes all previous lines matching the current line to be removed from the history list before that line is saved.
HISTCONTROL=erasedupsを実際に設定し実行した出力例です。
sakura@ubuntu:~$ history -c
sakura@ubuntu:~$ export HISTCONTROL=erasedups
sakura@ubuntu:~$ ls -l 合計 0
sakura@ubuntu:~$ date 2013年 12月 5日 木曜日 21:46:52 JST
sakura@ubuntu:~$ ls -l 合計 0
sakura@ubuntu:~$ date 2013年 12月 5日 木曜日 21:46:53 JST
sakura@ubuntu:~$ echo ubuntu ubuntu
sakura@ubuntu:~$ echo centos centos
sakura@ubuntu:~$ echo ubuntu ubuntu
sakura@ubuntu:~$ echo centos centos
sakura@ubuntu:~$ history
1 export HISTCONTROL=erasedups
2 ls -l
3 date
4 echo ubuntu
5 echo centos
6 history
sakura@ubuntu:~$以上、HISTCONTROL=erasedupsに関する記事でした。