If execfail is set, a failed exec does not cause a non-interactive shell to 
exit, but it seems to reset the EXIT trap:

cat <<'EOF' | bash
shopt -s execfail
trap "echo exiting..." EXIT
exec ~/does-not-exist
echo "exec failed in bash-$BASH_VERSION"
exit 1
EOF

Output:

bash: line 3: /home/march/does-not-exist: No such file or directory
exec failed in bash-5.0.17(1)-release

The "exiting..." line is missing. If you comment out exec ~/does-not-exist, 
"exiting..." will be printed as expected.
I get this under 5.1.8 as well, built with gcc 9.3 This is on Ubuntu 20 on 
x86_64.

-Mark

Reply via email to