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

관련 정보