Hi there,
Everyone knows that errexit is NOT inherited by subshells. But does anyone know why errexit still appears as set with set +o
?
The following example highlights the fact that errexit appears set in a subshell ( set +o
) even though it's actually unset (it does NOT exit with false).
$ cat /tmp/test
#!/bin/bash
set -o errexit
_f() {
set +o | grep errexit
false
echo "I'm still here!"
}
_f "$@" && true
_f "$@"
$
$ bash /tmp/test
set -o errexit <-- errexit appears set (unexpected)
I'm still here! <-- but it's actually unset (expected)
set -o errexit <-- errexit appears set (expected)
<-- indeed it exited with false (expected)
Thanks for sharing ideas.
Regards
Santiago