首页 > 解决方案 > history -c 不会将 $HISTCMD 重置为 1

问题描述

TL;DR:如果您的历史记录开始截断(例如,您的历史记录HISTSIZE为 400,但您输入的命令太多以至于历史记录编号为 500),则重置历史记录history -c将清除HISTSIZE或减少历史记录中的行数,并从中减去那么多行您的历史编号,但不会将其重置为 0(在示例中,它将重置为 100)。如何将历史编号完全重置为 0?

我知道这属于 Unix 和 Linux。我在8 月 16 日把它贴在那里,没有人能够回答,所以我把它贴在这里,希望其他人,查尔斯或 chepner 可以提供帮助。


Bash 4.2(以及 4.4)。我希望我的历史编号低于 4 位数。相关的 bashrc 部分:

HISTSIZE=99
HISTFILESIZE=100
#ignores back-to-back duplicate commands, not those that start with a space
HISTCONTROL=ignoredups
#ignore commands fewer than 5 characters long because we can type those
HISTIGNORE="?:??:???:????:?????:history"

history在 PS1 中或在 PS1中看到的历史编号\!显然会超出这些值。我希望能够在历史编号超过 1,000 时将其重置为 ~100。

history -c清除终端历史记录,但这只会将历史记录数减少它清除的命令数量,例如:

j:~$ history | wc -l
99
j:~$ echo $HISTFILESIZE
100
j:~$ echo $HISTCMD 
1203
j:~$ history -c
j:~$ echo $HISTCMD
1106

那么...如何将历史编号降低到较小的数字,例如$HIST(FILE)SIZE. 这是在 tmux 会话中,但我认为这无关紧要。

没有一个解决方案提供了工作。这是他们所做的set -x

history -c 不清除历史

标签: bash

解决方案


推荐阅读