コマンドが終了または終了した後にのみbashが実行されたときに時間集約的なコマンドを履歴に保存するにはどうすればよいですか?

コマンドが終了または終了した後にのみbashが実行されたときに時間集約的なコマンドを履歴に保存するにはどうすればよいですか?

セッションを終了する前にコマンドを保存する方法については、同様の表現の質問がたくさんあります。これは他の質問(PROMPT_COMMAND='history -a'などhistopt)への答えです。これ質問たとえば、誤解を招く表現があるが完全に入力されていないコマンドについて話します。

bash自動保存コマンドの初期トリガについて質問しています。たとえば、実行が完了していないコマンドがすでに含まれている他の端末で履歴を確認する必要があります。

私はbash実装がこれを直接実行できないと思います。しかし、尋ねる価値があると思います。

答え1

いくつかのアイデアに従ってください協会@Henrikは、このコードを最後に置くと.bashrc私の問題が解決したとコメントセクションで言及しました。

function saveafterenter {
   history -a
}
trap 'saveafterenter' DEBUG

注:一部の人はマニュアルページの説明に従って;をhistory -c; history -r使用しますが、これは良い考えではないようです。history -aこれは他のセッションの生存記録に影響を与えます。我々は通常、これらの動作を望んでいません。各セッションが閉じられるまで、レコードを独立して分岐し、最後のコマンドを履歴ファイルの最後に追加する方が便利です。インターリーブセッションは、ファイルに追加されるコマンドをオーバーライドします。

関連情報