何気なく使ってるhistoryコマンドについてちょっと調べてみた。Macの。

historyコマンドについて調べてみました。調べたのは割と前なので、なんで調べようと思ったのかもう忘れました。

historyコマンドはシェルに組み込まれたコマンドだった

$ whereis history
$ which history
$ type history
history is a shell builtin

historyコマンドがどこにあるのか気になったんですが、whereisとwhichでは何も出ませんでした。色々調べてtypeコマンドを知って、使ってみたらビルトインとの事。なので、下に書いた変数なんかもbashのお話ぽい。bashしか使ってないのでほかのシェルのことは分かりません。

ちなみにMacでのwhereisコマンドとwhichコマンドの違い - kanonjiの日記というエントリーもあります。

historyコマンドに関連するbashの変数

HISTFILE ヒストリーファイルの場所
HISTCMD 次にコマンドを実行した際に付くヒストリ番号
HISTCONTROL HISTCONTROL=ignoredups:同じコマンドを連続して実行した際、履歴には1回だけ記録する。HISTCONTROL=ignorespace:コマンドの頭にホワイトスペースをつけて実行すると、履歴に記録されない。HISTCONTROL=ignoreboth:ignoredupsとignorespaceの両方が適用される。
HISTFILESIZE ヒストリーファイルに記録される行数
HISTSIZE 記録されているコマンドの数。ヒストリーファイルではなく、上キーやhistoryコマンドで表示されるコマンド数、らしい*1。
HISTTIMEFORMAT 設定すると履歴に日付・時間を付けられる。
HISTIGNORE 履歴に残さないコマンドを指定する。複数指定する場合は:で区切る。*や?といったワイルドカードも使えるらしい。

変数をechoしてみた。

$ bash -version
GNU bash, version 3.2.17(1)-release (i386-apple-darwin9.0)
Copyright (C) 2005 Free Software Foundation, Inc.
$ echo $HISTFILE
/Users/kanonji/.bash_history
$ echo $HISTCMD
509
$ echo $HISTCONTROL

$ echo $HISTFILESIZE
500
$ echo $HISTSIZE
500
$ echo $HISTTIMEFORMAT

$ echo $HISTIGNORE

特に何も設定してないので、Macでの初期値のはずです。空行なのは、未設定だからかな。

環境

Mac Mac OS X 10.5.8(Leopard)
bash GNU bash, version 3.2.17(1)-release (i386-apple-darwin9.0)

*1:ちょっとよく分かってない