According to the documentation:
To prevent the shell from sending the SIGHUP signal to a particular job, it should be removed from the jobs table with the disown builtin or marked to not receive SIGHUP using disown -h.
Note the OR in the quote.
I can confirm that simply using
-h and re-logging that the process did not exit:
#!/bin/bash ( sleep 10s; echo 1 > b ) & disown
It seems that the
-h option is not necessary? If it works without then what is its purpose?