我使用多个Konsole终端。而且我希望我在每个终端中键入的所有命令都保存在命令历史记录中,以便我打开的下一个konsole拥有所有命令。为了防止每个终端覆盖另一个终端的命令历史记录,我在我的计算机中进行了以下设置.bashrc
# avoid duplicates and commands starting with space
export HISTCONTROL=ignoredups:erasedups:ignorespace
# append history entries..
shopt -s histappend
#My machine reboots without warning sometimes.Hence to save commands instantaneously.
export PROMPT_COMMAND="history -a"
export HISTSIZE=1000
PS1="\[\e[1;34m\]\! \[\e[0m\]"$PS1
我在最后一行给出了提示符,以查看命令号。命令号 从未超过600,但是我的一些旧命令仍然从历史中消失。有很多命令是重复给出的,但是正如从所期望的那样ignoredups
,它永远不会在提示符后增加命令no。然而旧的命令仍在消失,历史上的命令数量始终保持在500多一点。
.bash_history
尽管忽略了该文件,但该文件仍然包含许多重复项。
PS:echo $HISTSIZE
和输出$HISTFILESIZE
均为=1000
更新:我在上面的条目中发现了问题.bashrc
。只需调用即可history -a
,PROMPT_COMMAND
只需将最后一个新命令附加到.bash_history。所以ignoredups
和erasedups
没有作用。
有什么办法,我仍然可以写.bash_history而不用从每个终端重复吗?我不想在每个命令提示符处加载整个历史记录,history -r
然后再用再次写回history -w
,因为我在一个终端中发出的命令也会出现在另一个并行运行的终端中。我希望组合的命令仅出现在新终端中。
我的历史为何被修整到500的难题已解决。我注意到每次我进入这台机器时,它都会发生。.bash_profile
使用以下条目创建一个即可解决此问题。
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
现在我的.bashrc也会在每次ssh时执行。并且历史文件的大小现在正在单调增加。
bug-bash
这个问题发布一年后,这个问题听起来很像邮件列表:lists.gnu.org/archive/html/bug-bash/2013-07/msg00092.html