bash , zsh e ksh93 são as camadas que possuem um comando disown . Dos três, bash é o único que suporta uma opção h . Sem -h , emulga zsh behavior (remove da tabela de jobs), enquanto com -h emula ksh93 behavior (não envia um SIGHUP ao sair, mas não o remove da tabela de jobs você ainda pode bg ou fg ou matá-lo).
Você pode emular esse comportamento com zsh, fazendo:
typeset -A nohup
trap 'disown %${(k)^nohup}' EXIT
trap 'for i (${(k)nohup}) (($+jobstate[i])) || unset "nohup[$i]"' CHLD
Assim, o array associativo nohup contém a lista de jobs que não devem ser enviados com SIGHUP quando sair. Então, em vez de disown -h %1 , você escreveria nohup[1]= .
Veja também setopt nohup para não enviar SIGHUP para qualquer trabalho na saída.