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

また、使用することができますDEBUGzshでは、コマンドはスキップされますが、スキップを示すメカニズムは異なります。設定err_exitオプション

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

関連情報