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


8

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

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

回答:


8

ksh faqから:

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

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


11

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

最終的.hist*には多数になるので、時々削除することをお勧めします。


2

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

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


お返事をありがとうございます。私は、HP-UXに取り組んでいますし、そのbashがインストールされていないと私はそれをインストールする権限を持っていけない:(。
Hemant

1

ガートの答えに何か付け加えましょう。

ガーツ

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

私の

以下を追加することで、これらのファイルを自動的に削除できます。

trap 'rm ${HISTFILE}' exit


2
出口トラップについて少し注意してください-シェルは期待どおりにスタックを積み重ねません-出口トラップをさらに設定すると、以前のトラップがすべて上書きされます。トラップ用のスタッカーを書いたが、持っていたすべての精神的ヒューズをほとんど吹き飛ばした。
デビッドコリアー2017

-1

画面がインストールできません。私のサーバーでコンパイルすらしていません。
Hemant 2010

とにかく、画面でその機能がどのように提供されるかはわかりません
。MichaelMrozek

@Michaelは、画面でさまざまなセッションを行うことができ、画面には独自の履歴があります。画面の問題を解決するように言われた人はいないのですが...私は画面が好きではありませんでした。私の2番目の答えがアップモッド化された他の答えと基本的に同じであるときに、これがダウンモッド化されたとは言えません。@ヘマン...そして私はそれを知っているはずだったのですか?私のシステムでは、これを行うためにscreenを使用していません。私はそれが正しく行われた同様の効果を可能にすることを知っています。
xenoterracide 2010

私はあなたが何を説明しているのか知っていると思いますが、これは画面の機能ではなく、シェルの動作方法の副作用にすぎません。2つのシェルを開いた場合、一方が入力されたコマンドは、シェルが明確にサポートしない限り(たとえば、ZSHはサポートしますが、明示的に有効にする必要がある場合)、他方の履歴には表示されません。個別の履歴は保持されず、どちらもメインの履歴ファイルに書き込まれます。通常、シェルは一度読み込まれると、履歴ファイルの変更をチェックしないため、各シェルからの変更を確認できません
Michael Mrozek

@MichaelMrozek kornシェルには、すべてのウィンドウに対して1つの共有履歴があり、これを無効にすることはできません。使用してscreenもまったく役に立ちません。
FUZxxl 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.