Você não menciona se isso está sendo executado como um aplicativo X ou um aplicativo de console.
Se for um aplicativo de console, é claro que ele precisa ser fechado. Você se livrou de sua entrada / saída, mais tecnicamente o (pseudo) tty em que estava. É muito improvável que tenha sido isso que você quis dizer, então vamos supor que você esteja falando de um aplicativo X.
nohupdeve funcionar, não sei por que não é. Quando o shell é fechado, ele é enviado SIGHUPpara todos os processos em seu grupo de processos. nohup diz ao comando para ignorar SIGHUP.
Você também pode tentar setsid, que desconecta o processo do grupo de processos
alias emacs='setsid emacs'
Ou adicione disowndepois&