ZSH Shell历史记录无法正常工作。

52

我最近从Bash切换到Zsh,但我的历史记录似乎不起作用。当我按向上箭头时,我没有得到以前的命令。快捷键是否不同?另外,如何在标签页和新窗口之间启用共享历史记录?我使用的是标准终端工具,系统版本为Lion。


1
请查看此处答案。 - Thor
4个回答

94
将以下内容添加到你的 .zshrc 文件中:
SAVEHIST=1000  # Save most-recent 1000 lines
HISTFILE=~/.zsh_history

6
弄不清为什么 setopt inc_append_history share_history 没有生效。这个方法解决了问题。 - mrak
哇,这对我也起作用了。你能把它作为答案吗? - banarun
2
SAVEHIST=10 是什么意思? - eivindml
1
eivindml,我相信它控制历史记录中的最大记录数。 - roboslone
@DimiDak,当然可以增加值。请查看http://zsh.sourceforge.net/Guide/zshguide02.html以获取更多信息(特别是2.5.4)。 - roboslone

29

补充一下用户RoboSloNE的话,如果您已经通过以下方式进行了SAVEHIST和HISTFILE的双重检查:

$echo $HISTFILE
 ~/.zsh_history
$echo $SAVEHIST
 100

接下来的步骤是检查HISTFILE的权限:

$ls -l $HISTFILE
 -rw-------  1 user  staff  3722 Aug  8 11:29 /Users/user/.zsh_history

您的用户需要对该文件具有读写访问权限才能将其用作您的历史文件。我注意到,以root身份安装oh-my-zsh会将此文件的权限设置为root,因此您需要执行以下操作:

$chown user:group $HISTFILE

当我运行 echo $SAVEHIST 时,我得到了 zsh: command not found: 10000 的错误提示。我的 $HISTFILE 中没有任何内容被写入。我该如何解决这个问题? - sudo bangbang
1
这里的“group”是什么? - Omar Shabab

8

我使用以下设置解决了zsh的历史记录问题: vim ~/.zshrc

HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000

但我有读取历史记录的问题。 我需要手动清理文件 ~/.histfile,然后开始工作。

希望这能对您有所帮助。


-2
如果以上方法都没有解决问题,我的建议是检查文件~/.zsh_history的权限。
例如,输入以下命令:
sudo chmod 777 ~/.zsh_history

3
这是一个非常糟糕的想法。为什么你希望全世界都能够阅读到包括错别字和其他东西在内的你的历史记录呢?此外,chmod 777 意味着它是可执行的,任何人都可以对其进行写操作。这意味着另一个用户可以向你的主目录中的文件进行写操作,而你可能会意外运行它并造成破坏。 - Evan Carroll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接