ログアウトせずにコマンドライン履歴を保存する方法は? [コピー]

ログアウトせずにコマンドライン履歴を保存する方法は? [コピー]

重複の可能性:
シェル間でbashを共有するときに履歴を生成する方法はありますか?

複数のコンソールタブを開いていますが、新しく開いたコンソールタブの最初のコンソールタブで実行されたコマンドを使用したいと思います。

現在開いていない2番目のタブの最初のタブで実行されているコマンドを使用できますか?

コンソール間でコンソール履歴を同期的に使用するにはどうすればよいですか?

答え1

文書によると、history -a「新しい」履歴行(現在のbashセッションが開始されてから入力された履歴行)を履歴ファイルに追加する必要があります。

答え2

次のようなさまざまな設定を使用してこれを実行できます(完全にテストされていません)...

export PROMPT_COMMAND='history -a; history -c; history -r'

これにより、最新のコマンドがファイルに追加され、シェル履歴が消去され、シェルプロンプトが印刷されるたびにファイルが.bash_history再度読み取られます。したがって、コマンドを実行するたびに言葉です。.bash_history

.bash_historyしたがって、1つの端末のコマンドは実行されるたびにコマンドに追加され、2番目の端末は履歴ファイルを再読み込みするときにそのコマンドを選択します。

2番目のシェルは、コマンドを実行する前に最初のシェルが作成したばかりの履歴ファイルを再読み込みしないため、リアルタイムではありませんが、Bashの近くで取得したものと同じです。 。

HISTCONTROLenvvarをに設定するのがignoredups便利かもしれませんしerasedups、そうでなければこのオプションはうまくいかないかもしれません。

export HISTCONTROL='erasedups'

答え3

パート2:文書によると、history -r履歴ファイルを読み、現在の履歴を置き換える必要があります。

「同期化」が何を意味するのかはよくわかりませんが、2つのコンソールウィンドウ/タブ履歴を自動的に同期するという意味なら答えは「いいえ」と思います。手動で行う必要があります。

関連情報