仕事でMac使うようになって、ターミナルをペチペチ叩いていて、historyコマンドって便利だな〜と思うようになりました。
$ history
1 ls
2 git status
・
・
・
(略)
訳も分からず言われるがままにうったコマンドもあるので、
何か問題があったときにこのコマンドログは問題解決のヒントになります。
historyコマンドの上限
ただこのhisotryコマンド、困ったことに上限が500件となっています。
元インフラ屋としては、500件のログだと心配になってしまいます。
調べたところ、拡張はさほど難しくなかったので、拡張しました。
三日後にはどうやったか忘れそうなので、メモします。
historyコマンドって何してるの?
仕組みはめちゃくちゃ簡単です。
~/.bash_history
上記に隠しファイルがあり、コマンド入力のたびに一行ずつ追加されていきます。
このファイルの中身を表示するコマンドがhistoryです。
クリティカルな処理しているLinuxサーバであれば、そもそも上記ファイルを日次バックアップするとか、
シェルスクリプトでhistoryコマンドうってファイルに残すとかすべきですが、
当方は開発用のMacなので、そこまで困らないかな、と思い、上限拡張のみにしました。
bashrcを設定
初期設定を変えるためには、シェル起動のたびに読まれるbashrcというファイルに色々書くと実現できるらしい。
~/.bashrc
Macのデフォルトだと、ホームディレクトリ配下に下記ファイルがないようなので、新規作成する。
こちらのサイトを参考に、僕は下記の設定にしました。
HISTSIZE=5000 # 現在使用中のbashが保持する履歴数
HISTFILESIZE=5000 # 履歴ファイルに保存される履歴数
# HISTCONTROL=ignoredups # 同じコマンドが連続する場合は1回だけ記録する
# HISTCONTROL=ignorespace # コマンドの頭にスペースを付けて実行すると記録しない
HISTCONTROL=ignoreboth # ignoredupsとignorespaceどちらも設定する
HISTIGNORE=history # historyは記録しない。
HISTTIMEFORMAT='%Y/%m/%d %H:%M:%S ' #コマンド履歴に日時(例: 2013/10/26 12:34:56)を付加する
これで動くかな〜と再起動してみたのですが、読み込んでくれませんでした。
bash_profileも設定が必要でした。
bash_profileも設定
Macのデフォルトだと、bash_profileも存在しないので、こちらも作成しました。
ログイン時に読み込まれるのがbash_profile、bash起動時に読まれるのがbashrcという使い分けみたいです。
分かれていて嬉しいケースがあんまり思い浮かばないですが、細かいユーザー設定はbashrcに書くのがGood Practiceっぽいです。
if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi
ここまでやると、こんな出力結果になります。
505 2019/08/06 10:23:09 hisotry
506 2019/08/06 10:07:28 bash
507 2019/08/06 10:23:09 exit
嬉しい!
.bash_profileと.bashrcの作り方(シェル操作初心者向け)
下記を参照してください。
参考
コマンド履歴の達人を目指してみる
Macターミナルの初期設定では~/.bash_profileと~/.bashrcはない?