Isso pode não ser o seu caso, mas você chamou banana.sh
em um contexto específico em que -e
está sendo ignorado?
No manual de referência do Bash , você pode ler uma explicação detalhada sobre tal contexto, com as informações importantes da seguinte forma:
If a compound command or shell function executes in a context where -e is being ignored, none of the commands executed within the compound command or function body will be affected by the -e setting, even if -e is set and a command returns a failure status. If a compound command or shell function sets -e while executing in a context where -e is ignored, that setting will not have any effect until the compound command or the command containing the function call completes.
Isso significa que você tem o seguinte apple.sh
:
set -e
func() {
echo '...some commands #X...'
false # Suppose ./banana.sh fails here
echo '...some commands #Y...'
true
}
if func; then
echo 'func() returns success'
else
echo 'func() returns failure'
fi
Você receberá a seguinte saída:
...some commands #X...
...some commands #Y...
func() returns success
Não apenas bash, mas outras shells, incluindo dash e zsh, darão o mesmo resultado.
Para responder à sua pergunta, aparentemente não há como alterar o comportamento pelo menos no bash.