Bash
Bash歷史編號不是從1開始?
當我遇到一些奇怪的事情時,我正在自定義我的 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
查看你可以對你的歷史執行的操作