Quando você fecha uma janela do Terminal do GNOME, o processo de shell (ou o processo de qualquer comando que você instrui o Terminal a executar) recebe o sinal SIGHUP. Um processo pode capturar SIGHUP, o que significa que uma função especificada é chamada, e a maioria das shells a captura. O Bash reagirá a um SIGHUP enviando SIGHUP para cada um de seus processos em segundo plano (exceto aqueles que foram rejeitados).
Olhando para o seu exemplo com gedit (com alguma ajuda de pstree e strace ):
Quando a janela do Terminal GNOME é fechada, o gedit é enviado SIGHUP pelo shell, e como ele não captura SIGHUP (e não o ignora), o gedit irá sair imediatamente.
─gnome-terminal(31486)─bash(31494)──gedit(31530)
[31486] getpgid(0x7b06) = 31494
[31486] kill(-31494, SIGHUP) = 0
[31494] --- SIGHUP {si_signo=SIGHUP, si_code=SI_USER, si_pid=31486, si_uid=0} ---
[31494] kill(-31530, SIGHUP) = 0
[31530] --- SIGHUP {si_signo=SIGHUP, si_code=SI_USER, si_pid=31494, si_uid=0} ---
[31530] +++ killed by SIGHUP +++
[31494] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED, si_pid=31530, si_status=SIGHUP} ---
[31486] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED, si_pid=31494, si_status=SIGHUP} ---
Mas quando você digita o comando gnome-terminal e existe uma janela do Terminal GNOME, por padrão o Terminal GNOME fará algo um pouco incomum: ele chamará a fábrica org.gnome.Terminal.Factory via D-Bus e sairá imediatamente; não há trabalho em segundo plano para o shell ver por mais de uma fração de segundo.
Como resultado da chamada de fábrica, a nova janela que você obtém depois de digitar gnome-terminal é gerenciada por um novo thread do mesmo processo do Terminal GNOME que está gerenciando sua janela existente. Seu primeiro shell não tem conhecimento do id do processo do segundo shell e não pode matá-lo automaticamente.
─gnome-terminal(9063)─┬─bash(39548)
│ └─bash(39651)
├─{gnome-terminal}(9068)
└─{gnome-terminal}(9070)
Por outro lado, se você digitar gnome-terminal --disable-factory & , ele não chamará a fábrica e, em termos de processo, ela se comportará como gedit em seu exemplo.
─gnome-terminal(39817)──bash(39825)──gnome-terminal(39867)──bash(39874)
│ ├─{gnome-terminal}(39868)
│
└─{gnome-terminal}(39819)
Fechar a primeira janela do terminal fechará as janelas do primeiro e do segundo terminal.