Você pode declarar seu próprio código para ser executado quando o shell sair.
trap 'kill -HUP $(jobs -lp) 2>/dev/null || true' EXIT
(Minha proposta anterior de trap 'kill -HUP $$' EXIT
não funciona como 4.2, porque se eu entendi a fonte corretamente, o bash ignora parte de sua limpeza normal, incluindo o HUP reenviado, quando já está processando uma condição de saída.)