回答:
シェルがそれをどのように選択するかに完全に依存します
bashデフォルトでは、終了時に各シェルのローカル履歴で履歴ファイルを上書きするため、終了する最後のシェルが優先されます。このhistappendオプションにより、代わりにマスター履歴に追加されます(shopt -s histappend)。
zsh デフォルトで同じことを行い、それに対処するためのいくつかのオプションがあります:
appendhistory -シェルが終了すると、各シェルの履歴がマスター履歴ファイルに追加されますincappendhistory -シェルが終了するまで待つのではなく、シェルで行が実行されるたびにマスター履歴ファイルが更新されますsharehistory-に似てincappendhistoryいますが、マスター履歴ファイルから実行中のすべてのシェルに変更をプルするため、あるシェルでコマンドを実行Upしてから別のシェルでヒットして表示できますshopt -s histappendませんか?
私はもともとこのアイデアをO'Reillyの「Unix Power Tools」の本から得ました。
私には.profile私のセット:
export HISTFILE=$HOME/.sh_hist.$$
私.profileが読まれるたびに、セッションのPIDという名前の新しい履歴ファイルを取得します。複数のログインがある場合、各ログインは一意の履歴ファイルを取得します。Worksでkshとbash。
Xセッションで新しいターミナルを開いているだけの場合、それらは通常ログインシェルではありませんが、ログインシェルとして動作するように構成できます。たとえば、ログインシェルとしてrxvt +ls起動rxvtします。使用している端末のドキュメントを確認してください。
また、.logoutor .bash_logoutファイル(またはその他の手段)を使用してクリーンアップしない限り、最終的に.sh_histファイルが大量に発生します。