GNU/Linux >> Linux の 問題 >  >> Linux

壊れた歴史?

GUIモードでは、ユーザーが複数の端末を開いている場合、端末はそのユーザーの履歴ファイルをどのように書き換えますか?私が尋ねる理由は、各端末でユーザーが異なるコマンドを実行してしまう可能性が非常に高いためです。では、履歴ファイルは、すべての端末からのコマンドを保存するのでしょうか、それとも最初に開いた端末からのコマンドのみを保存するのでしょうか。または、この状況に対処するために採用されている他の種類のスキームはありますか?

承認された回答:

それは、シェルがそれをどのように処理するかによって完全に異なります

bash デフォルトでは、履歴ファイルは終了時に各シェルのローカル履歴で上書きされるため、最後に終了したシェルが優先されます。 histappend オプションを指定すると、代わりにマスター履歴に追加されます(shopt -s histappend

zsh デフォルトで同じことを行い、それに対処するためのいくつかのオプションがあります:

  • appendhistory —各シェルの履歴は、シェルが終了するときにマスター履歴ファイルに追加されます
  • incappendhistory —マスター履歴ファイルは、シェルが終了するまで待つのではなく、任意のシェルで行が実行されるたびに更新されます
  • sharehistory incappendhistoryのように 、ただし、マスター履歴ファイルから実行中のすべてのシェルに変更をプルするため、1つのシェルでコマンドを実行してから、 Upを押すことができます。 別のシェルでそれを見てください

Linux
  1. 特定のシェルでBash_historyを一時的に停止しますか?

  2. Linuxのコマンドライン履歴

  3. Linux履歴コマンド

  1. 履歴に保存せずにシェルでコマンドを実行するにはどうすればよいですか? [Linuxのヒント]

  2. CentOS / RHEL :BASH シェルの履歴を無効にする方法

  3. シェルで前のディレクトリに戻る

  1. シェルスクリプトで実装すると履歴置換が失敗しますか?

  2. タイプアヘッドをBash履歴検索(ctrl-r)に適用するにはどうすればよいですか?

  3. シェルを終了せずに履歴をアーカイブしますか?