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

vu8f3i0k  于 2023-10-18  发布在  Unix
关注(0)|答案(6)|浏览(175)

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

58wvjzkj

58wvjzkj1#

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

scyqe7ek

scyqe7ek2#

从OS X El Capitan 10.11开始,默认情况下,Bash被配置为保存每个终端的单独命令历史,因此它们可以单独恢复恢复。
当退出shell时,每个单独的历史也会被附加到~/.bash_history中的全局历史。如果你退出终端,然后重新打开它(启用或不启用Resume),你应该会发现来自每个终端的命令都在~/.bash_history中。如果您启用了恢复,则每个恢复的终端将仅包含其恢复的历史记录,但当您创建新终端时,它将从最新的全局历史记录开始。
因为所有的命令历史都被附加到全局~/.bash_history文件中,所以您可能希望通过设置HISTFILESIZE环境变量来增加存储的命令数量,这样最新的终端历史就不会过早地将其他终端历史从文件中挤出。默认值为500。我把我的设定到了一万。我还将HISTSIZE设置为10,000,这样我就可以浏览整个历史记录(否则,只会从历史记录文件中读取最后500个)。
安排单独命令历史的脚本位于OS X El Capitan 10.11及更高版本的/etc/bashrc_Apple_Terminal中。它包含大量的注解,描述了该机制如何工作,以及如何自定义或禁用它。

uurity8g

uurity8g3#

我经常遇到这种事我打开多个命令窗口,历史记录按它们关闭的顺序保存。您正在查找的命令可能已被另一个命令窗口覆盖。

gjmwrych

gjmwrych4#

我很确定这是一个bug。我用一个访客账户登录,所以配置文件是原始的。在home目录中,我这样做了:
touch .bash_history,然后tail -f .bash_history,以查看命令何时保存。
当终端会话关闭时,命令应该保存到全局.bash_history文件。我发现至少有一半的时间,命令在关闭终端后没有保存到文件中。它似乎很随机,当它会发生,当它不会。它似乎也来在条纹的地方,它会连续多次,然后再次得到dropped。如果我用exit而不是Command-W退出终端会话,它似乎每次都能工作。

vulvrdjw

vulvrdjw5#

在我的例子中,当我输入history时,它只显示最新的16个命令。但是,我可以通过Ctrl+R调用旧命令,所以我知道命令历史实际上更长。
截至2021年,命令历史记录位于名为.zsh_history的文件中:

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

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

nzkunb0c

nzkunb0c6#

echo 'alias history="history 1"' >> ~/.zshrc && source ~/.zshrc && history

相关问题