&> 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.