首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在每个命令之后,在ksh中打开刷新历史记录(或者停止刷新它)

在每个命令之后,在ksh中打开刷新历史记录(或者停止刷新它)
EN

Unix & Linux用户
提问于 2018-05-30 17:34:43
回答 1查看 631关注 0票数 1

我读过,与bash相反,ksh在每个命令之后刷新其历史。这可能对很多人都有好处,但对我来说,这让我发疯了!

我打开了几个窗口,这些窗口是为它们自己的任务而打开的,并且这个历史记录被共享,会使特定的命令会话历史变得混乱。

是否有一种方法可以禁用此刷新,以便只在注销时将历史记录附加到命令历史记录?

或者,也许有一种方法可以请求历史记录,而不是每次刷新命令行历史记录?

EN

回答 1

Unix & Linux用户

发布于 2018-05-31 12:32:44

我以前在screen中运行了多个shell。在我的.khsrc中,我会定制几个设置,包括$PS1和$HISTFILE (并包括tty设备的basename )。

这是相对容易重建的:

代码语言:javascript
复制
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,并为每个窗口拥有单独的历史文件。

代码语言:javascript
复制
SHELL=~/bin/screenshell screen

示例:

窗口3

代码语言:javascript
复制
    vagrant@/home/vagrant [3] 127$ history
    1       history
    2       error
    3       history

窗口4

代码语言:javascript
复制
    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,但是您需要进行某种测试来防止执行循环。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/446957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档