Você precisa colocar o nohup
antes do comando que inicia o firefox
, por isso ele precisa ser assim:
>$ nohup firefox
Em particular, eu criei um script para iniciar o Firefox, o qual eu clico duas vezes e escolho 'Run in terminal', mas quando o shell sai, o Firefox é morto imediatamente.
Como evito que isso aconteça?
Além disso, certifique-se de executar o firefox como um job em background e não como um front running, já que o shell é pai e está aguardando que o firefox seja executado e saia antes que o prompt seja retornado.
A maioria das soluções que você encontra na rede, executará o script do firefox em um subshell. Você obterá o controle de volta, depois que essa subshell sair. Se o script firefox for executado em segundo plano, você não verá as alterações e variáveis definidas e, se o shell pai (o shell real) sair, provavelmente continuará em segundo plano.
A principal razão por trás disso, que os shells, incluindo o bash, têm uma diferença muito clara entre os seus
Não existe uma maneira fácil de alterar o bash de um modo de script não interativo para um interativo, após uma execução de script (desta vez, o script firefox starter / wrapper).
Seria possível, mas como eu sei, nenhum shell tem suporte para isso.
Felizmente, existem muitas maneiras difíceis de alcançar seu objetivo:
bash --bashrc /here/is/what/i/want.sh
. /here/is/what/i/want.sh
para reexecutar seu próprio intérprete, mas desta vez já no modo interativo. Isso pode ser feito com um comando exec /bin/bash -i
. Basta colocar isso no final do seu script. Tags bash linux terminal shell-script