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