OS X 终端历史记录缺少命令

OS X terminal history missing commands

提问人:meisel 提问时间:12/8/2014 更新时间:8/23/2023 访问量:14932

问:

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

macOS UNIX 命令行 终端

评论


答:

3赞 Andras 12/8/2014 #1

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

评论

0赞 meisel 12/9/2014
有没有办法防止这种情况发生?
0赞 Andras 12/9/2014
在 csh(我使用的 shell;实际上是 tcsh)中,有一个选项可以在退出 shell 时合并到命令历史记录中。它有效,但如果像我一样在历史记录中有 10,000 行,它就会很慢。谷歌搜索,似乎也有办法让 bash 做到这一点,但我对 bash 并不熟悉。
8赞 Chris Page 11/28/2015 #2

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

当 shell 退出时,每个单独的历史记录也会附加到 ~/.bash_history 中的全局历史记录中。如果您退出终端,然后重新打开它(无论是否启用恢复),您应该会发现每个终端的命令都位于 ~/.bash_history 中。如果启用了“恢复”,则每个已还原的终端将仅包含其还原的历史记录,但是当您创建新终端时,它将从最新的全局历史记录开始。

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

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

评论

2赞 Marcin Kapusta 7/31/2018
这是什么意思:“如果您启用了恢复”。在哪里可以为我的终端启用恢复选项?
27赞 Sean Gibbons 4/27/2016 #3

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

评论

0赞 Misael Barreto 7/27/2018
非常感谢。我在MacOs High Sierra中遇到了这个问题。
0赞 jakob.j 5/29/2019
此错误在Mojave(在全新的Mac mini上)仍然存在。它根本没有保存任何 bash 历史记录,直到我禁用了此处所述的会话。
0赞 John Smith 7/4/2023
这个技巧在莫哈韦对我不起作用。我有 ~/.bash_sessions_disable 文件,但它似乎仍然任意记住不同窗口中的不同历史记录。
0赞 Senseful 9/23/2023
要在最新版本的 macOS 中禁用会话,您需要更改 ~/.zprofile 中的类似设置
2赞 StevieD 8/19/2018 #4

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

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

当终端会话关闭时,命令应该保存到全局文件中。我发现至少有一半的时间,在关闭终端后,命令没有保存到文件中。关于它何时会发生,何时不会发生,这似乎是随机的。它似乎也以条纹的形式出现,它会连续多次出现,然后再次变得片状。如果我退出终端会话而不是 Command-W,它似乎每次都有效。.bash_historyexit

评论

1赞 robotspacer 3/22/2019
这里肯定有一些问题。我总是使用并注意到根本没有写任何东西。找到这篇文章后,我尝试使用 command-W 关闭窗口。突然间,无论我如何关上窗户,一切都很好。exit.bash_history
2赞 jmgonet 5/24/2021 #5

就我而言,当我键入时,它只显示最新的 16 个命令。但是,我可以通过 Ctrl+R 调用较旧的命令,因此我知道命令历史记录实际上更长。history

截至 2021 年,命令历史记录位于名为.zsh_history

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

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

评论

0赞 randomx 12/29/2021
这是一个令人沮丧的混乱... # tail -n 1000 ~/.zsh_history
0赞 Tim Siwula 8/23/2023 #6
echo 'alias history="history 1"' >> ~/.zshrc && source ~/.zshrc && history

评论

1赞 soundflix 8/24/2023
编辑并解释它如何回答问题,以及 - 因为它是一个 11 年前的问题,有 5 个其他答案 - 它为已经给出的答案增加了什么。