【问题标题】:OS X terminal history missing commandsOS X 终端历史缺少命令
【发布时间】:2015-02-05 15:15:31
【问题描述】:

我知道我前几天输入了一个命令,但现在我无法使用history 或 .bash_history 找到它。任何想法为什么会发生这种情况?我怀疑这与在我的 OS X 终端中使用多个选项卡有关,并且不知何故历史不会在选项卡之间延续,但我不知道。

【问题讨论】:

    标签: macos unix command-line terminal


    【解决方案1】:

    我的终端遇到了这个问题。事实证明它正在保存到~/.bash_sessions 文件夹中新生成的文件中。这是 /etc/bashrc_Apple_Terminal 文件中概述的 El Capitan 引入的管理 bash 会话的新方法的一部分。 echo $HISTFILE 的输出证实了这一点。要禁用此行为,只需运行 touch ~/.bash_sessions_disable。然后退出终端应用程序并重新启动它。它现在应该正确保存历史记录,可以通过echo $HISTFILE 再次确认。我希望这会有所帮助!

    【讨论】:

    • 非常感谢。我在 MacOs High Sierra 中遇到了这个问题。
    • 这个错误在 Mojave 中仍然存在(在全新的 Mac mini 上)。在我按照此处所述禁用会话之前,它根本没有保存任何 bash 历史记录。
    【解决方案2】:

    从 OS X El Capitan 10.11 开始,默认情况下,Bash 配置为为每个终端保存单独的命令历史记录,因此可以单独恢复它们以进行恢复。

    当 shell 退出时,每个单独的历史记录也会附加到 ~/.bash_history 中的全局历史记录中。如果你退出终端然后重新打开它——无论是否启用了恢复——你应该会发现来自每个终端的命令都在 ~/.bash_history 中。如果您启用了 Resume,每个恢复的终端将只包含其恢复的历史记录,但当您创建一个新终端时,它将以最新的全局历史记录开始。

    由于所有命令历史记录都附加到全局 ~/.bash_history 文件中,您可能希望通过设置 HISTFILESIZE 环境变量来增加存储的命令数量,以便最新的终端历史记录不会推送其他终端历史记录过早退出文件。默认值为 500。我的设置为 10,000。我还将HISTSIZE 设置为10,000,这样我就可以浏览整个历史记录(否则,只会从历史记录文件中读取最后的500 个)。

    在 OS X El Capitan 10.11 及更高版本中,安排单独命令历史记录的脚本位于 /etc/bashrc_Apple_Terminal 中。它包含大量的 cmets,描述了该机制的工作原理,以及如何自定义或禁用它。

    【讨论】:

    • 这是什么意思:“如果您启用了简历”。我可以在哪里为我的终端启用 Resume 选项?
    【解决方案3】:

    这一直发生在我身上。我打开多个命令窗口,历史记录按它们关闭的顺序保存。您正在查找的命令可能已被另一个命令窗口覆盖。

    【讨论】:

    • 有没有办法防止这种情况发生?
    • 在 csh(我使用的 shell;实际上是 tcsh)中有一个选项可以在退出 shell 时合并到命令历史记录中。它可以工作,但是如果您像我一样在历史记录中有 10,000 行,它会很慢。谷歌搜索,似乎也有办法让 bash 做到这一点,但我对 bash 不太熟悉。
    【解决方案4】:

    我很确定这是一个错误。我登录了一个访客帐户,因此配置文件是原始的。在主目录中,我做了:

    touch .bash_history 然后tail -f .bash_history 查看命令何时保存。

    当终端会话关闭时,命令应该保存到全局.bash_history 文件中。我发现至少有一半的时间,关闭终端后命令没有保存到文件中。什么时候会发生什么时候不会发生,这似乎很随机。它似乎也出现了连续多次,然后又变得片状的条纹。如果我使用 exit 而不是 Command-W 退出终端会话,它似乎每次都有效。

    【讨论】:

    • 这里肯定有问题。我总是使用exit 并注意到没有任何东西被写入.bash_history。找到这篇文章后,我尝试使用 command-W 关闭一个窗口。突然间一切正常,无论我如何关闭窗口。
    【解决方案5】:

    在我的例子中,当我输入 history 时,它只显示最新的 16 个命令。但是,我可以通过 Ctrl+R 调用较旧的命令,所以我知道命令历史实际上更长。

    截至 2021 年,命令历史记录位于名为 .zsh_history 的文件中:

    • 打开您的命令终端。
    • 导航到您的主目录:cd ~
    • 列出所有文件:list -al
    • 你应该在那里找到它。

    你可以用vi打开它:vi .zsh_history,然后搜索你的命令。

    【讨论】:

    • 这是一个令人沮丧的混乱... # tail -n 1000 ~/.zsh_history
    猜你喜欢
    • 2017-05-25
    • 2011-09-20
    • 2013-03-10
    • 1970-01-01
    • 2012-09-10
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    相关资源
    最近更新 更多