GUIモードでユーザーが複数の端末を開くと、端末はユーザーの履歴ファイルをどのように書き換えますか?私が尋ねる理由は、ユーザーが各端末で異なるコマンドを実行する可能性が高いからです。もしそうなら、履歴ファイルは最終的にすべての端末のコマンドを保存しますか、それとも最初に開いた端末のみを保存しますか?それとも、この状況を解決するために使用できる他の種類のソリューションがありますか?
ベストアンサー1
それはすべてシェルがそれを処理することを選択する方法に依存します。
bash
デフォルトでは、各シェルは終了時にローカル履歴で履歴ファイルを上書きするため、最後に終了したシェルが優先されます。これhistappend
オプションを使用すると、デフォルトの履歴()に追加されますshopt -s histappend
。
zsh
基本的には同じことを行い、それを処理するためのいくつかのオプションがあります。
appendhistory
- シェルが終了すると、各シェルの履歴がデフォルトの履歴ファイルに追加されます。incappendhistory
- シェルが終了するのを待たずに、シェルで行が実行されるたびにデフォルトの履歴ファイルを更新します。sharehistory
- 同様incappendhistory
ですが、デフォルトの履歴ファイルの変更を実行しているすべてのシェルにインポートするので、あるシェルでコマンドを実行してから、Up別のシェルで実行して確認できます。