Corriendo
bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
da como resultado que test1se imprima en la consola e echo $?imprima lo 1que, en mi opinión, es correcto, porque el comando debe regresar con lo [b/d]ash -cque devolvió el interior, mientras que
dash -c 'dash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
da como resultado la misma salida, pero regresa de 0acuerdo con echo $?.
Me gustaría entender esta diferencia para ampliar mi comprensión de los shells y la programación de shell portátil.
Estoy usando bash4.4.12 y dash0.5.8-2.3ubuntu1 en Ubuntu 17.10 (Artful Aardvark).

&>está en POSIX. Eso es&seguido por>. Enfoo &> bar, eso esfoo &comenzarfooen segundo plano y> barrealizar una redirección sin un comando.bashno es compatible con POSIX cuando lo interpreta de manera diferente.