Artificial intelligent assistant

Disown won't take -h option I'm running a command that I now realize I'd like to leave running after I close my SSH session. I didn't start it with a `&` argument, but I have put it in the background (`CTRL`-`z`, `bg`). Now I'm trying to make it keep going after I disconnect. That's what `disown -h` is for, right? I've tried `disown -h` and `disown -h 1` (`jobs` shows my job as #1), and I get disown: job not found: -h Why is `disown` taking "-h" as a jobspec rather than an argument? I'm in `zsh`, if that matters.

`bash`, `zsh` and `ksh93` are the shells that have a `disown` command. Of the three, `bash` is the only one that supports a `h` option. Without `-h` it emultates `zsh` behavior (remove from the job table), while with `-h` it emulates `ksh93` behavior (will not send it a SIGHUP upon exit, but doesn't remove it from the job table so you can still `bg` or `fg` or kill it).

You could emulate that behavior with zsh, by doing:


typeset -A nohup
trap 'disown %${(k)^nohup}' EXIT
trap 'for i (${(k)nohup}) (($+jobstate[i])) || unset "nohup[$i]"' CHLD


So the nohup associative array holds the list of jobs that are not to be sent a SIGHUP upon exit. So, instead of `disown -h %1`, you'd write `nohup[1]=`.

See also `setopt nohup` to not send SIGHUP to any job upon exit.

xcX3v84RxoQ-4GxG32940ukFUIEgYdPy 8cdd7eb82e66a32109e10891d2c4f49c