Why doesn't it exit the shell? $ set -e $ echo $(false) Shouldn't the error code of $(false) command substitution be checked by set -e before passing stdout to the echo builtin? Isn't it the most logical behavior that most people would expect of set -e? Zsh version: zsh 4.3.17 (x86_64-redhat-linux-gnu) (if it matters) Thanks