同じユーザーの異なるセッションに個別のコマンド履歴を保持するにはどうすればよいですか?

同じユーザーの異なるセッションに個別のコマンド履歴を保持するにはどうすればよいですか?

私はいくつかの Unix サーバーでこの問題に直面しています。同じユーザーに対して別のセッションを開くと、コマンド履歴がすべてのセッションで共有されます。誤って または を押してCtrl-PEnterキーを押すと、問題が発生します。あるとき、ありがたいことに、ファイルを削除する権限のないディレクトリにいたため、up arrow実行してしまいました。rm -rf *

同じユーザーの異なるセッションに別々のコマンド履歴を持たせるにはどうすればよいでしょうか? ほとんどの場合、私は ksh シェルと tcsh シェルを使用しています。

答え1

HISTFILE=~/.hist$$を追加できます.profile。これにより、セッションごとに一意のファイルが生成されます。

最終的には大量に作成されるので.hist*、時々削除することをお勧めします。

答え2

からksh よくある質問:

Q1. シェルの個別の履歴ファイルを取得するにはどうすればよいですか?

A1. ksh は、同じ履歴ファイル名を使用するすべてのシェルに対して共有履歴ファイルを使用します。つまり、1 つのウィンドウに入力されたコマンドは、他のウィンドウのシェルに表示されます。別のウィンドウを取得するには、最初の履歴コマンドが作成される前に、HISTFILE 変数を別の名前に設定する必要があります。

答え3

同時セッションについて話しているのだと思います。連続するセッションを分離することはあまり役に立ちません。すべてのセッションが一意になるため、その履歴を利用できなくなります。その場合は、コマンド履歴を無効にしたほうがよいでしょう。

同時セッションを分離することについて話しているのであれば、Bash を使用することをお勧めします。2 つの同時セッションからのコマンド履歴が混在することはまずないと思います。Bash は.bash_historyログアウト時にのみ履歴を書き込むため、ログアウト後までコマンド履歴が混在することはありません。Bash の使用が許容される場合、問題は解決しますか?

答え4

関連情報