O aplicativo é conectado de duas maneiras: para bash e para o terminal.
A conexão com o terminal é que os fluxos padrão (stdin, stdout e stderr) do aplicativo estão conectados ao terminal. Aplicações GUI típicas não usam stdin ou stdout, mas podem emitir mensagens de erro para o stderr.
A conexão com o shell é que, se você iniciou o aplicativo com foo & , ele permanece conhecido no shell como um trabalho, conforme explicado em Diferença entre nohup, disown e & . Quando você fecha o terminal, o shell recebe um SIGHUP , que é propagado para seus jobs. Quando você digita exit no shell, ele desativa as tarefas de antemão (isso é configurável até certo ponto).
Você pode cortar a conexão do shell com o disown interno. Você não pode cortar a conexão do terminal, pelo menos não sem os métodos fraudulentos (usando um depurador) que podem travar o programa.