![bash 中的历史列表在新登录时总是被截断为 5000 行](https://linux22.com/image/48405/bash%20%E4%B8%AD%E7%9A%84%E5%8E%86%E5%8F%B2%E5%88%97%E8%A1%A8%E5%9C%A8%E6%96%B0%E7%99%BB%E5%BD%95%E6%97%B6%E6%80%BB%E6%98%AF%E8%A2%AB%E6%88%AA%E6%96%AD%E4%B8%BA%205000%20%E8%A1%8C.png)
类似于5000行限制问题当第一件事在.bashrc我有
export HISTSIZE=10001
和
export HISTFILESIZE=$HISTSIZE
我的用户没有~/.inputrc
文件,并且系统范围的/etc/inputrc
文件(Ubuntu 11.10 的默认值未更改)没有任何history-size
定义。手册页也没有readline
显示任何默认值,除了暗示(0)或无限制。
然而,每次我登录时,我的提示都显示我只有 5000 个,尽管在上次会话期间添加了更多独特的命令行,或者在history -w
没有注销的情况下保存。
此限制在哪里设置以及如何克服它?
我的提示和其他可能有趣的设置来自~/.bashrc或文件来源:
PS1='\u@\h\w \d,\t\$ (\!) '
HISTCONTROL=erasedups:ignorespace
HISTSIZE=10001
export HISTIGNORE="[ ]*:&:bg:fg:exit"
export HISTFILESIZE=$HISTSIZE
export PROMPT_COMMAND="history -a"
shopt -s histappend
HISTTIMEFORMAT="%Y-%m-%d_%H-%M-%S "
shopt -s histreedit
提示示例:
master@quant~/dev Mon Feb 27,10:08:29$ (5721)
回答一些评论:
# to unpollute from other concurrent sessions, which previously already truncated file to 5000 at login:
master@ventana~ Mon Feb 27,18:47:35$ (9220) history -w
master@ventana~ Mon Feb 27,18:51:34$ (9220) history |wc
9219 69109 795143
master@ventana~ Mon Feb 27,18:51:51$ (9220) wc -l ~/.bash_history
18442 /home/master/.bash_history
# ignoring timestamps, nominally every other line like #1328201645
master@ventana~ Mon Feb 27,18:51:58$ (9220) grep -vc "^#[0-9]\{10\}$" .bash_history
9222
答案1
我可能对此有一个可行的理论。
以前我有
HISTSIZE=10001
然而 ~/.bash_history 中的实际行看起来像
#1341908063
w;df
#1341908291
wizmo reboot!
#1341909327
sc stop uxsms; sleep 1; sc start UxSms
换句话说,由于我的HISTTIMEFORMAT="%Y-%m-%d_%H-%M-%S "
shell 环境设置,每隔一行都是一个时间戳。
因此,对于 5000 个命令的历史记录,文件中需要 10000 行。
现在我将限制设置为 HISTSIZE=20001
最后看到我的提示保留了超过 5000 个历史命令后全新登录。