zsh não suporta a sintaxe do descritor de arquivo em movimento como bash ou ksh . Portanto, 1>&3- significa redirecionar a saída padrão e o erro padrão para o arquivo denominado 3- :
$ echo -n '<'; zsh -c 'ls 3>&2 2>&1 1>&3-'; echo '>'
<>
$ ls
3- a b
Para obter o mesmo comportamento de descritor de arquivo em movimento, como bash e ksh , em qualquer shell POSIX:
sh -c 'ls 3>&2 2>&1 3>&1 3>&-'
Isso é o que o 1>&3- em bash e ksh faz internamente, o descritor de arquivo duplicado 3 para o descritor de arquivo 1 e, em seguida, fecha o descritor de arquivo 3.