有些事情已经困扰我有一段时间了,我似乎无法在手册页或使用“不要作恶”搜索引擎中找到相关的答案。
我的 .bashrc 具有以下内容:
shopt -s histappend
HISTSIZE=100
HISTFILESIZE=0 # 200 previous value
将 HISTFILESIZE 设置为 0 允许我从每个新术语窗口的干净历史记录开始。
我发现它与包含 的提示结合使用很实用,因为在使用或\#
调用前一个命令之前对其进行可视化时,只需执行以下操作:!n
!-p
$ history | more
查看其相关的“n”值
就我而言,通常是由于以下原因造成的:
$ \history | tail -1 | awk '{print $1}' # (I know this is an overkill, don't flame me)
等于 PS1 中 # 的展开值减 1,我一直都喜欢这样。但有时不是。有时 # 的展开值有点“跑偏”。它以这样的方式递增,以至于它变成 > 比
$(( $(\history | tail -1 | awk '{print $1}')+1 ))
有人能指点一下吗?
答案1
最有可能的原因是你设置了HISTCONTROL
一个包含 的值ignoredupes
。运行测试
echo $HISTCONTROL
如果返回类似 的内容ignoredups
,则表示重复的命令不会保存到您的历史记录中。它们是但是按 PS1 的 来计算\#
。这意味着\#
每次运行相同的命令两次时, 都会愉快地增加,但你的history
不会增加,这将导致你观察到的差异。
因此,要么删除ignoredupes
(HISTCONTROL
这通常在您的中设置~/.profile
,但也可以设置在~/.bashrc
)或使用\!
而不是\#
在PS1
。