複数の端末ウィンドウでtcsh履歴を保持する

複数の端末ウィンドウでtcsh履歴を保持する

複数の端末にわたって同じ履歴を保存または維持するにはどうすればよいですか?

同じ問題ですが、bashシェルの場合は以下のリンクで説明します。

複数の端末ウィンドウでbash履歴を保持する

tcshシェルの対応する設定を教えてください。

答え1

これらの変数は、履歴を上書きせずに独自にマージし、重複項目を保存しないように設定します。

set history=1000
set histdup=erase
set savehist=(1000 merge)

秘密の武器は次のとおりです。

alias precmd 'history -S; history -M'

プロンプトを印刷する前、つまりすべてのコマンドを入力した後に履歴を保存してマージします。

上記のすべてをアカウントに追加する必要があります。.tcshrc文書。

答え2

また伊丹が答えたalias precmd 'history -S; history -M'、SIGINT、EOF信号(Ctrl + C、Ctrl + D)も記録するので、記録ファイルを混乱させることができることを付け加えたいと思います。

ここに画像の説明を入力してください。

より良いアプローチは、コマンドの実行後に現在のシェル履歴を保存してマージすることです。

tcshはSIGINTまたはEOFを有効なコマンドとして認識しないため、以下の設定でこれを達成できます。

alias postcmd       "history -S; history -M"

答え3

単一のグローバル履歴ファイルは、複数のタブを同時に操作するときにコマンドの順序を混同するため、通常は必要ありません。

各タブの履歴を保持するには、次の方法を使用します。

set histfile=~/.history_`tty|sed "s#^.*/##"`
set history=1000
set savehist=(${history} merge)
alias postcmd 'history -S'

これにより、tty IDに基づいて各タブに別々の履歴ファイルが作成されます。

xfce4-terminalを使用してタブの順序を変更せずに一番右のタブだけを閉じないと、各履歴は関連するタブ(およびパス)に正しく復元されます。タブの並べ替えには tty ID が与えられますが、xfwm4 セッションのリカバリは各タブを最初から再生成するため (0 から始まる新しい tty ID の割り当て)、履歴ファイルは「無効な」タブに復元されます (つまり、元のタブではなくタブ)ディレクトリパス)。これらの変更を追跡する方法の解決策が見つかりませんでした。

関連情報