回答:
リアルタイムでのBash履歴の更新で詳細に説明されているシンプルなソリューション。
これらのコマンドを.bashrc構成に入れるように指示されています。
shopt -s histappend
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
最初のコマンドは、.historyファイルモードを追加に変更します。2番目のhistory -aコマンドは、各シェルプロンプトで実行されるコマンドを構成します。-aすぐに履歴ファイルに現在の/新しい行を書き込みます。
zshに関連:
これをあなたのに入れてみてください.bashrc:
shopt -s histappend # append to history, don't overwrite it
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
ここにクレジット:https : //stackoverflow.com/questions/103944/real-time-history-export-amongst-bash-terminal-windows/3055135
history -c実行中のセッションの履歴をクリアします。これにより、履歴カウンタがの量だけ減少し$HISTSIZEます。history -rの内容を読み取り、$HISTFILE現在実行中のセッション履歴に挿入します。これにより、の行数だけ履歴カウンタが増加し$HISTFILEます。
私はそれがコマンドがほぼすぐに利用可能であることを意味すると思います(1つの端末、書き込みecho 1、2番目の端末echo 2、最初にecho 3下向き矢印を2回押すと、echo 2利用可能になるはずです。書かれています。
man history...
bash組み込みであるため、で説明されていman bashます。を使用することもできますhelp history。
-rとの-c対の違いと思います-a。
history -c; history -r?私はそれがあなたにとってより良いと思います、それは時々私にとってより良いでしょう、私はしばしば複数のシェルを使用して1つの仕事をするので、できるだけ多くの履歴を持っていることを好みます。私は実際、コマンドが終了した後にのみ履歴に書き込まれることを気にしています。通常、あるホストに対してsshセッションを開始し、最初のホストがまだ実行中に別のホストを開きたい場合は、まだ履歴に書き込まれていないため、再入力する必要があります。
history -a十分かもしれません
約100000エントリの大きな履歴ファイルがあり、履歴リストをクリアして履歴ファイル全体を読み取る(history -cおよびを使用history -r)バリアントは、プロンプトが表示される前に顕著な(おそらく0.2秒)遅延を導入します。history -n履歴ファイルから新しい行のみが読み取られるように使用する方が高速です。
shopt -s histappend
PROMPT_COMMAND='history -a;history -n'
PROMPT_COMMAND シェル変数であるため、エクスポートする必要はありません。
他のすべての回答に関するメモ(基本的に同じものです):
(または友人)PROMPT_COMMAND="history -a;$PROMPT_COMMAND"での設定で.bashrc十分です。
また、history -a現在のセッションの履歴を「スナップショット」するときはいつでも手動で実行できます。
常にファイルに新しい行を追加し、上書きしshopt -s histappendないため、コマンドは必要history -aありません。また、少なくともBash 4ではhistappend、デフォルトの動作です。
shopt -s histappendです。また、私はそれを自分の~/.bash_profile
histappendになっている別の設定がある可能性があります。これはデフォルトの動作です。探していますが、Macにアクセスできません。
control-r、1つのbashのコマンド履歴で逆検索するために使用します。history | grep正規表現が必要でない場合よりも便利です。