macOSのターミナルでコマンド履歴が保存されない
通常、ターミナルの終了時には、当該ターミナルにて入力されたコマンドの履歴が保存され、次にターミナルが開かれたときに過去に入力されたコマンドを(↑キー等によって)呼び出すことができるようになっています。
しかしながら、MacBookをリカバリしたところ、表題のことが起きました。
環境
- MacBook (Early 2015)
- macOS Mojave (10.14.6)
- ターミナル (2.9.5 (421.2))
- bash (3.2.57(1)-release (x86_64-apple-darwin18))
解決策
ターミナルにて、以下のコマンドを実行する。
echo : > ~/.bash_history; exit
これによりターミナルが終了します。 終了前のコマンド履歴は保存されていないものの、次回以降に開かれたターミナルにおいては、その終了時にコマンド履歴が保存されるようになりました。
解説
根本的な原因は不明なものの、少なくとも私の環境では、
- ターミナルにおいてsave/restore mechanismが有効になっており(
~/.bash_sessions_disable
が存在しない)、且つ、 ~/.bash_history
が存在しないか又はそのサイズがゼロである
ときにターミナルが開かれると、その終了時にコマンド履歴が保存されないようになっていました。
即ち、上記コマンドは、ダミーデータ(:
)を書き込むことにより、サイズがゼロより大きい~/.bash_history
を作成するためのものです。