zsh
shell 不使用 HISTIGNORE
环境变量,而是有一个 HISTORY_IGNORE
环境变量。
从zshparam
手册中可知:
HISTORY_IGNORE
如果设置了该变量,在历史文件写入时会将其当作模式进行处理。与模式匹配的任何潜在历史条目都将被跳过。例如,如果该值为
fc *
,则调用交互式历史记录编辑器的命令永远不会被写入历史文件。请注意,
HISTORY_IGNORE
定义了一个单一的模式:要指定备选项,请使用(first|second|...)
语法。
因此,在您的情况下,您需要执行以下操作:
HISTORY_IGNORE="(ls|cd|pwd|exit|cd ..)"
或类似的东西。
请注意,这只影响写入历史文件的历史记录,而不是当前活动的shell会话中的历史记录,据我所见。
SAVEHIST
设置为正数,确保HISTFILE
设置为历史文件的名称,并将HISTORY_IGNORE
设置为"(cd|ls)"
,无论如何都可以像zsh
手册所述那样正常工作。 - KusalanandaHISTORY_IGNORE
设置为"(cd|ls)*"
,那么您还将淘汰任何以cd
或ls
开头的其他命令,因此您可能需要使用"(cd|cd *|ls|ls *)"
, 或者"(cd(| *)|ls(| *))"
。 - Kusalananda