LoginSignup
9
10

More than 3 years have passed since last update.

Macのターミナルのhistoryコマンドの上限を拡張する

Posted at

仕事で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っぽいです。

bash_profile
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の作り方(シェル操作初心者向け)

下記を参照してください。

.bash_profileと.bashrcのまとめ

参考

コマンド履歴の達人を目指してみる
Macターミナルの初期設定では~/.bash_profileと~/.bashrcはない?

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10