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在主目录中添加文件 file 即可禁用新的 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。所以,你编辑了错误的文件。

相关内容