2014-12-08 161 views
4

我知道我有一天輸入了命令,但現在我無法使用history或.bash_history找到它。任何想法爲什麼發生這種情況我懷疑它與在我的OS X終端中使用多個選項卡有關,並且不知何故歷史記錄不會在選項卡之間傳遞,但我不知道。OS X終端歷史丟失命令

回答

3

從OS X El Capitan 10.11開始,默認情況下,Bash被配置爲爲每個終端保存單獨的命令歷史記錄,因此它們可以分別恢復爲Resume。

當shell退出時,每個歷史記錄也會附加到〜/ .bash_history中的全局歷史記錄中。如果您退出終端然後重新打開終端 - 無論是否啓用了恢復 - 您應該會發現來自每個終端的命令都在〜/ .bash_history中。如果啓用了恢復功能,每個恢復的終端將只包含恢復的歷史記錄,但是當您創建新的終端時,它將以最新的全局歷史記錄開始。

因爲所有的命令歷史記錄被添加到全局的〜/ .bash_history文件中,您可能希望通過設置HISTFILESIZE環境變量來增加存儲的命令的數量,以便最新的終端歷史記錄不會將其他終端歷史記錄的文件過早。默認值是500.我有我的設置爲10,000。我也將HISTSIZE設置爲10,000,這樣我就可以瀏覽整個歷史(否則,只有最後的500個將從歷史文件中讀取)。

在OS X El Capitan 10.11及更高版本中,排列單獨命令歷史的腳本位於/etc/bashrc_Apple_Terminal。它包含廣泛的評論,描述機制如何工作,以及如何定製或禁用它。

1

這一直髮生在我身上。我打開了多個命令窗口,歷史記錄按照它們關閉的順序保存。您正在查找的命令可能已被另一個命令窗口覆蓋。

+0

有沒有辦法來防止這種情況?在csh中使用 – meisel 2014-12-08 17:11:48

+0

(我使用的shell;實際上是tcsh)在退出shell時,有一個選項可以在命令歷史記錄中進行合併。它可以工作,但是如果你的歷史記錄中有10,000行,那麼它就會很慢。谷歌搜索,似乎有辦法讓bash也這樣做,但我不熟悉bash。 – Andras 2014-12-08 17:30:06

5

我有我的終端這個問題。原來它保存在~/.bash_sessions文件夾中新生成的文件中。這是管理在/etc/bashrc_Apple_Terminal文件中概述的與El Capitan一起引入的bash會話的新方法的一部分。這得到echo $HISTFILE的確認。要禁用此行爲,只需運行touch ~/.bash_sessions_disable。然後退出終端應用程序並重新啓動它。現在應該正確保存歷史記錄,可以通過echo $HISTFILE再次確認。我希望這有幫助!