&>
não está no POSIX e não é suportado por dash
. É analisado como & >
, então o comando é em segundo plano. Os comandos em segundo plano recebem um status de saída zero da perspectiva do pai, já que não saiu quando você leu $ ?.
É também por isso que (pelo menos para mim) a saída " test1
" aparece no meu prompt, após o comando terminou.
O &> foo
do Bash é equivalente a > foo 2>&1
e um script portátil deve usar o último.