Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos OS X终端历史记录缺少命令_Macos_Unix_Command Line_Terminal - Fatal编程技术网

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

Macos OS X终端历史记录缺少命令,macos,unix,command-line,terminal,Macos,Unix,Command Line,Terminal,我知道前几天我输入了一个命令,但现在我无法使用history或.bash\u history找到它。你知道为什么会这样吗?我怀疑这与在我的OS X终端中使用多个选项卡有关,而且不知何故,历史记录不会在选项卡之间传递,但我不知道。这种情况一直发生在我身上。我打开多个命令窗口,历史记录按关闭顺序保存。您正在查找的命令可能已被另一个命令窗口覆盖。从OS X El Capitan 10.11开始,默认情况下,Bash配置为为为每个终端保存单独的命令历史记录,以便可以分别恢复它们以恢复 退出shell时,

我知道前几天我输入了一个命令,但现在我无法使用
history
或.bash\u history找到它。你知道为什么会这样吗?我怀疑这与在我的OS X终端中使用多个选项卡有关,而且不知何故,历史记录不会在选项卡之间传递,但我不知道。

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

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

退出shell时,每个单独的历史也会附加到~/.bash_history中的全局历史。如果您退出终端,然后在启用或不启用恢复的情况下重新打开它,您应该会发现来自每个终端的命令都在~/.bash_历史记录中。如果启用了“恢复”,则每个恢复的终端将仅包含其恢复的历史记录,但创建新终端时,它将以最新的全局历史记录开始

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


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

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

我很确定这是一个bug。我使用来宾帐户登录,因此配置文件是原始的。在主目录中,我执行了以下操作:

触摸.bash_历史记录
,然后触摸
tail-f.bash_历史记录
,查看命令何时保存


当终端会话关闭时,命令应该保存到全局
.bash\u history
文件中。我发现至少有一半的时间,在关闭终端后,命令没有保存到文件中。关于何时会发生和何时不会发生,这似乎是相当随机的。它似乎也会连续出现很多次,然后再次变薄。如果我每次退出终端会话时都使用
exit
而不是Command-W,那么它似乎都会起作用。

在我的情况下,当我键入
history
时,它只显示最近的16条命令。但是,我可以通过Ctrl+R调用较旧的命令,因此我知道命令历史记录实际上更长

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

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

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

有什么方法可以防止这种情况发生吗?在csh(我使用的shell;实际上是tcsh)中,当您退出shell时,有一个选项可以在命令历史记录中合并。它是有效的,但是如果你的历史记录中有10000行像我一样的话,它就慢了。谷歌搜索,似乎也有办法让bash做到这一点,但我对bash不太熟悉。非常感谢。我在MacOs High Sierra遇到了这个问题。这个错误仍然存在于Mojave(在全新的MacMini上)。它根本没有保存任何bash历史记录,直到我禁用了这里描述的会话。它是什么意思:“如果您启用了Resume”。在哪里可以为我的终端启用恢复选项?这里肯定有问题。我总是使用
exit
并注意到
.bash\u history
中根本没有写入任何内容。找到这篇文章后,我尝试使用command-W关闭一个窗口。突然间,无论我怎样关上窗户,一切都很好。