
有件事一直困擾著我一段時間,我似乎無法在手冊頁或使用您的「不要作惡」搜尋引擎中找到相關答案。
我的 .bashrc 有以下內容:
shopt -s histappend
HISTSIZE=100
HISTFILESIZE=0 # 200 previous value
將 HISTFILESIZE 設定為 0 允許我從每個新學期視窗的乾淨歷史記錄開始。
我發現它與使用包含 的提示結合起來很實用,因為在使用或\#
調用之前可視化前一個命令時,可以這樣做:!n
!-p
$ history | more
查看其相關的「n」值
就我而言,通常的結果是:
$ \history | tail -1 | awk '{print $1}' # (I know this is an overkill, don't flame me)
等於 PS1 中 # 的擴充值減 1,這就是我一直喜歡的方式。但有時不是。有時 # 的擴充值有點「跑掉」。它以這樣一種方式遞增,使它變得 > 比
$(( $(\history | tail -1 | awk '{print $1}')+1 ))
有人指點一下嗎?
答案1
最可能的原因是您設定HISTCONTROL
的值包含ignoredupes
.透過運行測試
echo $HISTCONTROL
如果傳回類似 的內容ignoredups
,則表示重複的命令不會儲存到您的歷史記錄中。他們是但按 PS1 計算\#
。這意味著\#
每次您運行相同的命令兩次時,它都會愉快地增加,但您history
不會增加,這將導致您觀察到的差異。
因此,要么刪除ignoredupes
from HISTCONTROL
(這通常在您的中設置~/.profile
,但也可以在 中設置~/.bashrc
)或使用\!
而不是\#
在PS1
.