【问题标题】:HISTIGNORE not working in zshHISTIGNORE 在 zsh 中不起作用
【发布时间】:2016-07-24 06:05:50
【问题描述】:

我已经添加了

export HISTIGNORE="ls:cd:pwd:exit:cd .."

到我的 .zshrc 文件。

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

【问题讨论】:

    标签: zsh oh-my-zsh zshrc


    【解决方案1】:

    zsh shell 不使用HISTIGNORE 环境变量。相反,它有一个HISTORY_IGNORE 环境变量。

    来自zshparam manual

    HISTORY_IGNORE

    如果设置,则在历史文件出现时被视为模式 书面。任何与该模式匹配的潜在历史条目都会被跳过。例如,如果值为fc *,则 调用交互式历史编辑器的命令永远不会 写入历史文件。

    请注意,HISTORY_IGNORE 定义了一个模式:指定 替代方案使用(first|second|...) 语法。

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

    HISTORY_IGNORE="(ls|cd|pwd|exit|cd ..)"
    

    或类似的东西。

    请注意,据我所知,这只会影响写入历史文件的历史记录,而不影响当前活动 shell 会话中的历史记录。

    【讨论】:

    • 似乎还没有工作。我正在使用 .oh-my-zsh,不知道这是否会改变这些变量。我在关注这些家伙的例子github.com/bradp/dotfiles/blob/master/sourced/exports,这就是为什么我认为它会那样工作。但我不确定了。
    • 好吧,将SAVEHIST 设置为正数,确保将HISTFILE 设置为历史文件的名称,并将HISTORY_IGNORE 设置为"(cd|ls)" 肯定会像zsh 无论如何都是手册。
    • 谢谢库萨兰南达。我想你是对的。我想并且希望当我运行“历史”或按下向上键时,这会阻止显示这些命令。它们不在历史文件中,所以我猜它正在工作。
    • @kev 这将是一个通配模式而不是正则表达式。
    • @Saftever 是的,但是如果你将HISTORY_IGNORE 设置为"(cd|ls)*",你也会清除任何以cdls 开头的other 命令,所以你可能想要"(cd|cd *|ls|ls *)",或"(cd(| *)|ls(| *))"
    猜你喜欢
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    相关资源
    最近更新 更多