各コマンドの後、ksh でリフレッシュ履歴をオンにするか、フラッシュを停止します。

各コマンドの後、ksh でリフレッシュ履歴をオンにするか、フラッシュを停止します。

私はbashとは異なり、kshがすべてのコマンドの後にレコードを更新することを読んだ。これは多くの人にとって良いことかもしれませんが、私にとっては狂気になります!

私の仕事のためにいくつかのウィンドウが開いていましたが、共有履歴はコマンドの特定のセッション履歴と混同されました。

ログアウト時にコマンド履歴にのみ履歴を追加するようにこの更新を無効にする方法はありますか?

それとも、毎回コマンドラインレコードを更新するのではなく、レコードを要求する方法はありますか?

答え1

screen私の.khsrcでは、$ PS1や$ HISTFILE(ttyデバイスのデフォルト名を含む)を含むいくつかの設定をカスタマイズします。

これは比較的再現しやすい。

tty=$(basename $(tty))
histdir=~/.hist
mkdir -p $histdir
export HISTFILE=$histdir/history.$tty
export PS1=$USER@'$PWD ['$tty'] ${?#0}$ '
exec /usr/bin/ksh

別の名前で保存し~/bin/screenshellて実行してみてくださいchmod +x ~/bin/screenshellscreen各ウィンドウを実行し、別々の履歴ファイルを持つことができます。

SHELL=~/bin/screenshell screen

例:

ウィンドウ3

    vagrant@/home/vagrant [3] 127$ history
    1       history
    2       error
    3       history

ウィンドウ4

    vagrant@/home/vagrant [4] $ history
    1       history
    vagrant@/home/vagrant [4] $ echo $HISTFILE
    /home/vagrant/.hist/history.4
    vagrant@/home/vagrant [4] $ tty
    /dev/pts/4

もう一つの方法はexec kshで実行する.kshrcことですが、実行が繰り返されるのを防ぐには一種のテストが必要です。

関連情報