Como "set -e" funciona com subshells?

Eu queria saber seset -e propaga-se por meio de subcascas (ou seja, uma subcamada herda a-e configuração de seu pai), então fiz alguns experimentos. Encontrei alguns resultados estranhos que não posso explicar.

Primeiro, aqui estão alguns testes básicos. Eles retornam o que eu espero.

( true; false )         # 1
( false; true )         # 0
( set -e; false; true ) # 1

Agora eu tentei o que acontece se eu colocar um subshell dentro dele. Essa expressão retorna 1, o que sugere que ela se propaga.

( set -e; ( false; true ) )

Então eu tentei essas expressões. Eu esperava que eles retornassem 1, mas descobri que eles retornavam 0.

( set -e; ( true; false ); true )
( set -e; ( set -e; false; true ); true )

Por quê? Nos dois casos, o subshell interno retorna 1, sejaset -e propaga ou não (como verifiquei no início). O subshell externo possuiset -e, o que significa que deve falhar após a saída do subshell interno, mas não ocorre. Alguém pode explicar isso?

questionAnswers(3)

yourAnswerToTheQuestion