Eu percebo que este é um segmento antigo, mas lembro-me de encontrar uma solução mais elaborada do que as listadas aqui.
$ (gui_app &> /dev/null &)
"& > / dev / null" redireciona stdout e stderr para o dispositivo nulo. O último e comercial torna o processo executado em segundo plano. Os parênteses ao redor do comando farão com que seu "gui_app" seja executado em uma subcamada.
Isso desanexará o processo "gui_app" do console em que você executa esse comando. Portanto, mesmo se você fechar o emulador de terminal pai da janela, o "gui_app" não será fechado. Eu corri isso, em seguida, olhei para a árvore de processo com o comando "pstree" e encontrei um aplicativo iniciado dessa forma se tornará o processo filho para "init".
Por exemplo,
$ gui_app &> /dev/null &
executará o aplicativo em segundo plano, mas se tornará um processo secundário do processo do console e terminará quando você fechar o terminal. (Embora sair do terminal através do bash usando o comando exit ou Ctrl-D, o bash será limpo, entregando o processo de segundo plano ao init.)
Como alternativa, você pode usar "nohup", mas isso redireciona a saída & erro para um arquivo por padrão. O comando "disown" (se disponível no shell) pode desanexar o processo do terminal depois que você iniciou um processo em segundo plano:
$ gui_app &
$ disown
(BTW tudo isso se aplica ao bash. Tenho certeza de que outros shells têm outros métodos / sintaxe para fazer isso.)
Super-usuário semelhante Q & A - talvez onde eu me lembre de algumas das respostas de: ... inicie programas linux GUI a partir da linha de comando, mas separados da linha de comando?
Alguma referência:
Processos de rejeição (Ferramentas elétricas do UNIX)
Se é uma simples chamada para um aplicativo GUI - sem opções complicadas e tal - parece que é possível usar um iniciador como "gmrun" ou dmenu (aviso: áudio alto) também é uma boa opção. Vinculá-lo a uma combinação de teclas. Eu não uso um lançador ainda, mas tentei os dois.
OBSERVAÇÃO: CarlF nos relatórios de comentários de aplicativos da GUI iniciados por meio de "gui_app &" método não fecha quando ele sai do terminal pai. Acho que estávamos fechando o terminal de maneiras diferentes. Eu estava fechando a janela em que o emulador de terminal estava sendo executado. Acho que ele pode ter saído do emulador de terminal por meio do shell (comando de saída ou Ctrl-D). Eu testei isso e vi que sair através do bash não para a GUI iniciada como processo em segundo plano do terminal, como diz CarlF. Parece que o bash entrega os processos em segundo plano ao init quando é dada a chance de limpar. De fato, este deve ser o mecanismo pelo qual o processo em segundo plano iniciado em uma subcamada é transferido para o init.