Mac 上的終端​​機會話之間不保留 Bash 歷史記錄

Mac 上的終端​​機會話之間不保留 Bash 歷史記錄

我的 bash 歷史記錄神秘地停止工作,我不知道如何修復它。這就是我的 .bashrc 的樣子:

HISTSIZE=500
HISTFILESIZE=500
HISTFILE=$HOME/.bash_history

但是,當我運行時echo $HISTFILE它會被列印出來/Users/myusername/.bash_sessions/EE8689E5-7DAD-4018-817E-0AF1DE36082A.historynew

我是 .bash_history 檔案的擁有者,所以我不太確定如何解決這個問題。

謝謝!

答案1

終端為每個終端會話分配一個唯一的標識符,並透過 TERM_SESSION_ID 環境變數進行通信,以便在終端中執行的程式可以在退出並重新啟動啟用「恢復」的終端機時保存/恢復應用程式特定的狀態。

新資料夾 (~/.bash_sessions/) 用於儲存會話特有的 HISTFILE 和 .session 檔案。

shell 啟動期間會執行會話檔案。舊文件會定期刪除。

預設行為安排為每個復原的終端機會話獨立保存和還原 bash 命令歷史記錄。它還將命令合併到新會話的全域歷史記錄中。

您可以透過設定來停用此行為並共享單一歷史記錄

export SHELL_SESSION_HISTORY=0

如果定義了 HISTTIMEFORMAT,則預設會停用每個會話歷史記錄(在 /private/etc/bashrc_Apple_Terminal 中了解更多)

如果存在以下文件,則保存/恢復機制將被停用:

~/.bash_sessions_disable

自從 El Capitan 發布以來,Apple 已經改變了一些行為,因此最好在此處閱讀更多相關資訊less /private/etc/bashrc_Apple_Terminal

答案2

El Capitan 升級後我注意到了類似的情況。只需將檔案新增.bash_sessions_disable至主目錄即可停用新的 bash 會話並.bash_history重新使用。

Reddit 主題有更多資訊和進一步的連結。

答案3

您可以透過更新至最新的 RVM 版本或執行下列命令來解決 RVM 問題:

  echo 'shell_session_update' > $HOME/.bash_logout

https://github.com/rvm/rvm/issues/3540了解更多。

答案4

如果它是 Mac,我想它的預設登入 shell 是bash並且它運行.profile而不是.bashrc.所以,您編輯了錯誤的檔案。

相關內容