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.