阻止命令在 zsh 中运行

阻止命令在 zsh 中运行

在 bash 中我可以这样做:

#!/bin/bash
validate() {
    if [[ "$BASH_COMMAND" == whoami ]]; then
        return 1
    else
        return 0
    fi
}
set -T
trap 'validate' DEBUG
shopt -s extdebug

这样如果我运行whoami什么也不会发生。

我怎样才能在 zsh 中实现相同的目标?我看过了preexec,但在其中找不到太多信息文档

答案1

您还可以使用DEBUG陷阱在 zsh 中跳过命令,但指示跳过的机制不同:您需要设置err_exit选项

function validate {
    if [[ "$ZSH_DEBUG_CMD" == whoami ]]; then
        setopt err_exit
    fi
}
trap 'validate' DEBUG

相关内容