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.
nohup
deve funcionar, não sei por que não é. Quando o shell é fechado, ele é enviado SIGHUP
para 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 disown
depois&