Bash

Bash歷史編號不是從1開始?

  • October 11, 2011

當我遇到一些奇怪的事情時,我正在自定義我的 bash 提示符(我在 OS X 10.7 上)。在我的提示中,我包括了!,它應該給我歷史編號。然而,歷史編號總是從 501 開始,而不是 1。即使我重新啟動終端也是如此。

我似乎找不到任何接近這個的東西,我想知道你們是否可以提供一些見解。

來自 man bash:

  On startup, the history is initialized from the file named by the vari‐
  able HISTFILE (default ~/.bash_history).  The file named by  the  value
  of  HISTFILE  is  truncated,  if necessary, to contain no more than the
  number of lines specified by the value of HISTFILESIZE. [...] When an 
  interactive  shell  exits, the last $HISTSIZE lines are copied from the
  history list to $HISTFILE.

雖然該文本很清楚,但讓我們通過範例來玩一下(這是一個 deb 系統,但 bash 是 bash)。

我現在的歷史狀態:

~$ set | grep HIST
HISTCONTROL=ignoredups:ignorespace
HISTFILE=/home/hmontoliu/.bash_history
HISTFILESIZE=2000
HISTSIZE=1000

由於 HISTFILESIZE 為 2000 且 HISTSIZE 為 1000,因此只有 HISTFILE 的最後 1000 行可用,因此您可能會誤以為我的歷史記錄從 1000 開始。

~$ history | head -1
1000  if i=1; then echo $i; done

~$ history | wc -l
1000

但實際上 HISTFILE 儲存了最後 2000 個命令:

~$ wc -l $HISTFILE
2000 /home/hmontoliu/.bash_history

如果您認為這很煩人,您可以等於 HISTSIZE 和 HISTFILESIZE

~$ echo "export HISTSIZE=$HISTFILESIZE" >> .bashrc
~$ bash -l
~$ history | head -1
   1  ls
~$ history | wc -l
2000
~$ set | grep HIST
HISTCONTROL=ignoredups:ignorespace
HISTFILE=/home/hmontoliu/.bash_history
HISTFILESIZE=2000
HISTSIZE=2000

最後的提示:你應該跑去help history查看你可以對你的歷史執行的操作

引用自:https://unix.stackexchange.com/questions/18171