画面セッション全体で bash コマンドの履歴を自動的に保存します。

画面セッション全体で bash コマンドの履歴を自動的に保存します。

スクリーンセッションに接続されています。いくつかの操作を行った後、切り離します。これにより、前のコマンドhistory | tailのみが表示され、screen -rscreenセッションで実行されたコマンドは表示されません。デフォルトでは、履歴はscreenセッションの実行中とは別の後に他のコンテンツを表示します。

screenセッションのコマンドをbash履歴に追加するにはどうすればよいですか?

設定:画面4.0.3、bash 4.1.2

ベストアンサー1

他のシェルは通常、シェルを終了したときに発生する履歴ファイルにフラッシュ(記録)されるまで、独自の記録をメモリに保持しますが、次のようにオーバーライドできます。

export PROMPT_COMMAND="history -a; history -c; history -r; ${PROMPT_COMMAND}"

これは、新しいプロンプトが実行されるたびに(つまり、コマンドを実行するたびに)履歴が最初にファイルに追加され、次に現在のシェルのメモリから消去され、次に現在のシェルがファイルから履歴を再ロードすることを意味します。 。

これは、画面上でも複数のウィンドウでも、システム上のアカウントのすべてのシェルが他のすべてのシェルのすべてのコマンド履歴を保持して表示することを意味します。

この行を.bashrcに入れてください。以下を追加して履歴サイズを増やすこともできます。

export HISTSIZE=5000

2017年11月24日編集:ちょうどPROMPT_COMMANDに問題があることに気づきました。それ自体を参照しているので、それを複製すると、変数source .bashrcに多くのコピーが追加されます。history -a; history -nだからあなたがしたいことは次のとおりです。

export PROMPT_COMMAND='history -a; history -n; <whatever other commands you want...>'

おすすめ記事