VSCodeでGit Bashを使っていると、コマンド履歴が消えて困ることがありますよね。
これは、VSCodeを閉じた際には、コマンド履歴が保存されないのが原因です。この問題を解決するには、入力したコマンドを即時に保存する必要があります。
この記事では、Git Bashでコマンド履歴を即座に保存する方法をわかりやすく解説します。
コマンド履歴が保存されない原因
Git Bashでは、通常.bash_history
というファイルにコマンド履歴が保存されますが、デフォルトでは次のような問題があります。
- VSCodeを閉じる際に履歴が保存されない
- 「VSCodeを
×
ボタンで閉じた場合」や「VSCodeのターミナルを閉じる場合」にはセッションが正しく終了しない場合があります。この場合、コマンド履歴が.bash_history
に保存されないので、コマンド履歴が消えてしまいます。 exit
コマンドを使って閉じると、コマンド履歴が.bash_history
に保存されます。
- 「VSCodeを
- セッション終了時にのみ履歴が保存される
- Bashのデフォルト設定では、セッション終了時にのみ
.bash_history
に書き込まれます。そのため、exit
コマンドの実行等により、明示的にセッションを終了しない限り、コマンド履歴は.bash_history
に保存されません。
- Bashのデフォルト設定では、セッション終了時にのみ
この問題を解決するために、Git Bashでコマンド履歴を即座に保存する設定を追加します。
補足
.bash_history
はホームディレクトリ(Windowsでは C:\Users\<ユーザー名>
、LinuxやMacでは /home/<ユーザー名>
)にあります。
Git Bashでコマンド履歴を即座に保存する方法
以下の手順を行うことで、入力したコマンドが即座に.bash_history
に保存されるように設定できます。その結果、VSCodeを閉じてもコマンド履歴が消えてしまうことはありません。
Git Bashでコマンド履歴を即座に保存する手順
.bashrc
を開く.bashrc
を編集して設定を追加する.bashrc
を反映させる- 【補足】
.bashrc
の設定が正しく反映されたかを確認する
補足
.bashrc
はbashを起動したタイミングで読み込まれるファイルです。
.bashrcを開く
Git Bashの設定はホームディレクトリにある.bashrc
というファイルで管理されています。.bashrc
はWindowsではC:\Users\<ユーザー名>\.bashrc
、LinuxやMacでは /home/<ユーザー名>/.bashrc
にあります。
まずはVSCode等で.bashrc
を開きます。
# VSCodeで開く場合
code ~/.bashrc
# メモ帳で開く場合
notepad ~/.bashrc
# nanoエディタで開く場合
nano ~/.bashrc
~
はユーザーのホームディレクトリを表します。例えば、Windowsでは C:\Users\<ユーザー名>
、LinuxやMacでは /home/<ユーザー名>
を指します。
.bashrcを編集して設定を追加する
.bashrc
ファイルを開いたら、末尾に以下のコードを追記してください。
追加するコード
shopt -s histappend
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
shopt -s histappend
- コマンド履歴を「上書きモード」ではなく「追記モード」で保存する設定です。
- デフォルトでは、セッション終了時に履歴を上書き保存してしまうため、別のセッションの履歴が消える問題が起こります。この設定で、それを防ぎます。
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
history -a
: 現在のセッションで入力したコマンドを.bash_history
に追記する。;$PROMPT_COMMAND
: 既存のPROMPT_COMMAND
の設定を上書きせずに追記する。
.bashrcを反映させる
.bashrc
を編集しただけでは、設定は反映されないので注意してください。以下のコマンドを実行して.bashrc
の設定を反映させます。
source ~/.bashrc
ターミナルを再起動しても設定は反映されますが、source
コマンドを使うとすぐに反映できます。
.bashrcの設定が正しく反映されたかを確認する
.bashrc
の設定が正しく反映されたかを確認するために以下のコマンドを実行してみましょう。
echo "Hello, World!"
ターミナルを閉じて再起動します。その後、以下のコマンドで履歴を確認してみましょう。先ほど実行したコマンド(例: echo "Hello, World!"
)が表示されていれば、設定は正しく反映されています。
history
補足
.bashrc
を作成後にGit Bashを起動すると、以下のメッセージが表示されます。
WARNING: Found ~/.bashrc but no ~/.bash_profile, ~/.bash_login or ~/.profile.
This looks like an incorrect setup.
A ~/.bash_profile that loads ~/.bashrc will be created for you.
これは、「~/.bashrc
は見つかったけど、~/.bash_profile
、~/.bash_login
、または ~/.profile
が見つからないので、~/.bashrc
を読み込む~/.bash_profile
を作ったよ!」という内容です。
~/.bash_profile
の中身を見ると、以下のようになっており、~/.bash_profile
は~/.profile
が存在する場合には~/.profile
を読み込み、~/.bashrc
が存在する場合には~/.bashrc
を読み込んでいます。
$ cat ~/.bash_profile
# generated by Git for Windows
test -f ~/.profile && . ~/.profile
test -f ~/.bashrc && . ~/.bashrc
本記事のまとめ
この記事ではGit Bashでコマンド履歴を即座に保存する方法について説明しました。
.bashrc
に以下の設定を追加することで、VSCodeを閉じた場合でもコマンド履歴が失われることなく、次回のセッションで同じ履歴を利用できます。
shopt -s histappend
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
お読み頂きありがとうございました。