Como você marcou zsh , deixe-me dizer que todos os três redirecionamentos funcionam exatamente da mesma maneira. Como você deve ter lido em ambas as postagens duplicadas (a do comentário e a da sua postagem), todas redirecionam stderr para stdout , o que é redirecionado para o arquivo 'logfile' (ou seja, o arquivo de log será conter a saída e os erros).
Mas o comportamento deles muda muito dependendo do shell em que você está.
Todos os três estilos de redirecionamento funcionam bem da mesma maneira em bash e zsh
Mas:
Apenas >& funciona em csh ou tcsh
[soum@server ~]$ ./test.sh > logfile 2>&1
Ambiguous output redirect.
[soum@server ~]$ ./test.sh &> logfile
Invalid null command.
[soum@server ~]$ ./test.sh >& logfile
[soum@server ~]$ echo $SHELL
/bin/tcsh
[soum@server ~]$
Em ksh apenas 2>&1 funciona.
$ ./test.sh >& logfile
-ksh: logfile: bad file unit number
$ ./test.sh &> logfile
[1] 23039
$ 1 2 3 4 5 6 logfile test.sh
ls: cannot access ttr: No such file or directory
[1] + Done(2) ./test.sh &> logfile
Eu odeio ksh . Enquanto >& apenas deu um erro, o &> pagou uma parte do comando e esvaziou o arquivo de log (se não estiver vazio).