bash 多行历史记录与 lithist 选项被破坏

bash 多行历史记录与 lithist 选项被破坏

我曾经启用 lithist 选项,这使得 bash 历史记录存储在多行中,但是有一天,lithist 选项不起作用。

启用 lithist 意味着您可以在一个历史记录条目中存储多行。如果您键入一些用括号括起来的命令:

~:$ (
> echo hey
> echo bye
> )
hey
bye

然后按ctrl-p,你会看到这个:

~:$ (
echo hey
echo bye
)

在我糟糕的一天, lithist 坏了,人们会看到多行分成多个条目

# press ctrl-p
~:$ )
# press ctrl-p again
~:$ echo bye

这个问题之前出现过几次。这通常是因为 的大小~/.bash_history超出了变量的大小HISTFILESIZE,而 bash 截断了~/.bash_history,这使得历史文件的格式被破坏。我曾经删除历史文件的一些开头行,然后重新启动 shell,历史记录就会恢复。

但是,这次即使我删除整个历史文件,它也无法恢复。

我的配置:

HISTSIZE=1000
HISTFILESIZE=8000
shopt -s cmdhist lithist

当 lithist 工作时,命令的输出history 应如下所示:

 4519* 2019-08-24 15:46:05 (
echo hey
echo bye
)
 4520  2019-08-24 16:00:21 history
 4521  2019-08-24 16:00:23 history  | less

当 lithist 被破坏时,历史记录的输出也被破坏:

    1  2019-08-24 14:25:04 \rm .bash_history
    2  2019-08-24 14:25:13 (
    3  2019-08-24 14:42:26 echo a
    4  2019-08-24 14:42:26 echo c
    5  2019-08-24 14:42:26 )

但是,我的历史文件看起来没问题:

#1566627904
\rm .bash_history
#1566627913
(
echo a
echo c
)
#1566627926
echo bye

此行为出现在 CentOS 6.10 上,并且无法修复,但可以在另一台具有 debianstretch 的计算机上修复。

相关内容