SunOS 5.10 サーバーに複数の PuTTy セッションを開いており、ksh を使用しています。コマンド履歴は異なるセッション間で共有される場合もあれば、共有されない場合もあります。共有されるかどうかを決定する要因がわかりません。共有されるというのは、あるセッションで実行されたコマンドが、別のセッションでは以前に実行されたコマンドとして表示されることを意味します。
共有したくないのですが、そのための設定はありますか?
答え1
ほとんどの Unix シェルは、シェルの起動時にファイルから古い履歴を一度読み取り、そのシェルを閉じると、履歴がファイルに再度書き込まれます。
通常は古い内容が単純に上書きされるだけなので、以下のようなことをすると…
- セッションAとBにログインする
- AとBは同じ内容を読んでいる
~/.history
- AとBは同じ内容を読んでいる
test
Aで コマンドを実行する- Aは
test
記憶に残る歴史を追加する - Bはコマンドを知らない
- Aは
- Aからログアウト
- Aは
~/.history
履歴を上書きし、test
- Aは
- セッションCにログイン
- Cは の内容を読み取り
~/.history
、test
- Cは の内容を読み取り
- Bからログアウト
- Bは
~/.history
履歴を上書きしますが、test
- Bは
- Cからログアウト
- Cは
~/.history
履歴を上書きし、test
- Cは
その後、test
ステップ 3 の後に履歴ファイルに保存されますが、ステップ 5 で破棄され、ステップ 6 で再度追加されます...
一部のシェルには、これを回避する「履歴を追加」オプションがあります (例: shopt -s histappend
Bash)。
完全に別の履歴を作成したい場合は、履歴ファイルを にシンボリックリンクするのが簡単な方法です/dev/null
。