バッシュの歴史
アクティブ端末で発行された新しいコマンド.bash_history
は、次のコマンドを使用してファイルに追加できます。
history -a
理解すべき唯一のトリッキーな概念は、各ターミナルに独自のbash履歴リストがあることです(.bash_history
ターミナルを開くときにファイルからロードされます)
このアクティブな端末の存続期間中に他の端末によって書き込まれた新しい履歴をプルしたい場合、.bash_history
ファイルの内容をアクティブなbash履歴リストに追加できます。
history -c;history -r
これにより、現在の履歴リストがクリアされるため、繰り返しリストを取得せず、履歴ファイルを(現在は空の)リストに追加します。
解決
bash変数PROMPT_COMMAND
を使用して、新しいプロンプトごとにコマンドを発行できます(ターミナルでEnterキーを押すたびに)
export PROMPT_COMMAND='history -a'
これにより、発行された各コマンドが履歴ファイルに記録されます。
結果
これで、新しいターミナルを開くと、他のターミナルを使用しなくても、他のターミナルの履歴が保持されexit
ます。これは私の好みのワークフローです。
より高い精度
(何らかの理由で)同時に使用している2つの端末があり、新しいコマンドごとに両方の端末間で履歴を反映させたいとします。
export PROMPT_COMMAND='history -a;history -c;history -r'
ここでの主な欠点は、Enterキーを押してPROMPT_COMMANDを再実行し、反対側の端末から最新の履歴を取得する必要がある場合があることです。
このより正確なオプションがおそらく過剰である理由を見ることができますが、それはそのユースケースで機能します。