私は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/screenshell
。screen
各ウィンドウを実行し、別々の履歴ファイルを持つことができます。
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
ことですが、実行が繰り返されるのを防ぐには一種のテストが必要です。