HISTIGNORE不在zsh工作

tgr*_*een 2 zsh zshrc oh-my-zsh

我已经添加了

export HISTIGNORE="ls:cd:pwd:exit:cd .."
Run Code Online (Sandbox Code Playgroud)

到我的.zshrc文件.

删除.zsh_history并重新启动终端,但它仍然不会忽略这些命令.

在此输入图像描述

Kus*_*nda 8

zsh外壳不使用HISTIGNORE环境变量.相反,它有一个HISTORY_IGNORE环境变量.

zshparam手册:

HISTORY_IGNORE

如果设置,则在写入历史文件时将其视为模式.将跳过与该模式匹配的任何潜在历史记录条目.例如,如果值为, fc * 则调用交互式历史编辑器的命令永远不会写入历史文件.

注意,HISTORY_IGNORE定义单个模式:指定替代使用(first|second|...)语法.

所以在你的情况下,你会想做

HISTORY_IGNORE="(ls|cd|pwd|exit|cd ..)"
Run Code Online (Sandbox Code Playgroud)

或类似的东西.

请注意,就我所见,这仅影响写入历史文件的历史记录,而不影响当前活动的shell会话中的历史记录.

  • @Saftever是的,但是如果你将`HISTORY_IGNORE`设置为`"(cd|ls)*"`,你也会清除任何以`cd`或`ls`开头的_other_命令,所以你可能需要`"(cd |cd *|ls|ls *)"` 或 `"(cd(| *)|ls(| *))"`。 (2认同)