GUIモードでは、ユーザーが複数の端末を開いている場合、端末はそのユーザーの履歴ファイルをどのように書き換えますか?私が尋ねる理由は、各端末でユーザーが異なるコマンドを実行してしまう可能性が非常に高いためです。では、履歴ファイルは、すべての端末からのコマンドを保存するのでしょうか、それとも最初に開いた端末からのコマンドのみを保存するのでしょうか。または、この状況に対処するために採用されている他の種類のスキームはありますか?
承認された回答:
それは、シェルがそれをどのように処理するかによって完全に異なります
bash
デフォルトでは、履歴ファイルは終了時に各シェルのローカル履歴で上書きされるため、最後に終了したシェルが優先されます。 histappend
オプションを指定すると、代わりにマスター履歴に追加されます(shopt -s histappend
。
zsh
デフォルトで同じことを行い、それに対処するためのいくつかのオプションがあります:
appendhistory
—各シェルの履歴は、シェルが終了するときにマスター履歴ファイルに追加されます-
incappendhistory
—マスター履歴ファイルは、シェルが終了するまで待つのではなく、任意のシェルで行が実行されるたびに更新されます -
sharehistory
—incappendhistory
のように 、ただし、マスター履歴ファイルから実行中のすべてのシェルに変更をプルするため、1つのシェルでコマンドを実行してから、 Upを押すことができます。 別のシェルでそれを見てください