回答:
シェルがそれをどのように選択するかに完全に依存します
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
します。使用している端末のドキュメントを確認してください。
また、.logout
or .bash_logout
ファイル(またはその他の手段)を使用してクリーンアップしない限り、最終的に.sh_hist
ファイルが大量に発生します。