複数のターミナルウィンドウでtcsh履歴を保持する


8

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

同じ質問ですが、bashシェルについては、以下のリンクで議論されました

複数のターミナルウィンドウでbash履歴を保持する

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


tcshのhistory詳細については、を参照してくださいman tcsh。を検索history -Sすると、最も関連性の高い部分にジャンプします。
ランドール

回答:


7

これらの変数は、履歴を上書きではなくマージして、重複を保存しないように設定します。

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

秘密のソースはこの行です:

alias precmd 'history -S; history -M'

これは、プロンプトを出力する前に、つまり入力する各コマンドの後に、履歴を保存してマージします。

上記のすべてを.tcshrcファイルに追加する必要があります。


これを追加alias precmd 'history -S; history -M'したとき、コマンドを書いても何も起こりませんでした。他にすべきことはありますか?
アイマンサラ2017年

@AymanSalah何が発生するかは明らかではありません- ディスクに書き込まれる.historyファイル(またはhistfile設定されている場合はシェル変数値)です。 なければprecmd、エイリアスセット、ls -l .history表示されます.history手つかずのファイルを。 では precmd上記のように設定し、ls -l .historyそれは各コマンドで書き込まれますよう、更新されたタイムスタンプとサイズが表示されます。
Randall

@Randall指摘していただきありがとうございます。シェルセッションで問題が発生しました。あなたが言っていることは100%正しいです。
2018

1

加えて、IDANの答えは、私はそれを追加したいalias precmd 'history -S; history -M'、それはまた、SIGINTとEOF信号(Ctrlキー+ CとCtrl + D)を記録するので、潜在的に混乱が履歴ファイルをバックアップすることができます。

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

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

tcshはSIGINTまたはEOFを有効なコマンドとして認識しないため、代わりに以下のこの設定でそれを実現できます。

alias postcmd       "history -S; history -M"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.