我读过,与bash相反,ksh在每个命令之后刷新其历史。这可能对很多人都有好处,但对我来说,这让我发疯了!
我打开了几个窗口,这些窗口是为它们自己的任务而打开的,并且这个历史记录被共享,会使特定的命令会话历史变得混乱。
是否有一种方法可以禁用此刷新,以便只在注销时将历史记录附加到命令历史记录?
或者,也许有一种方法可以请求历史记录,而不是每次刷新命令行历史记录?
发布于 2018-05-31 12:32:44
我以前在screen中运行了多个shell。在我的.khsrc中,我会定制几个设置,包括$PS1和$HISTFILE (并包括tty设备的basename )。
这是相对容易重建的:
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,但是您需要进行某种测试来防止执行循环。
https://unix.stackexchange.com/questions/446957
复制相似问题