~/.bash_history の動作メカニズムに関する若干の混乱

~/.bash_history の動作メカニズムに関する若干の混乱

複数の端末で作業している場合、〜/.bash_historyに何があるのか​​混乱しています。他の端末に履歴を保存するにはどうすればよいですか?

ベストアンサー1

デフォルトでは、履歴ファイルは開始時にのみ読み取られ、終了時にのみ記録されます。したがって、同時に複数のシェルを起動すると、最後のシェルが終了した時点の履歴のみが保持されます。生成された残りの記録は上書きされます。

さまざまな方法でこの動作を調整できます。 1つはshopt -s histappend.bashrcに追加することです。このオプションを使用すると、シェルの終了時に履歴ファイルを上書きせずに追加されます。

PROMPT_COMMANDの環境変数に以下を追加して、各コマンドの後にbashに追加の操作を実行させることで、この動作をさらに調整できます。これにより、プロンプトが印刷されるたびにコマンドが実行されます。.bashrcexport PROMPT_COMMAND="history -a;"history -a

上記の2つの調整では、開いているシェルの数に関係なく、bash履歴ファイルが各シェルに追加され続けます。履歴ファイルは起動時にのみ読み取られるため、各シェルは他のシェルが実行しているコマンドを見ることができないことに注意することが重要です。を呼び出すことで、シェルの現在の履歴からこれらの項目を手動で読み取ることができますが、複数のシェルがhistory -n常に接続されている間にこれを行うときにいくつかの奇妙なことがわかりました。これを自動化し、記録に多くの注意を払うことに注意してください。

おすすめ記事