Não consigo reproduzir esse comportamento no meu sistema. A partir de sua descrição, parece que há um processo que não está definido corretamente para o plano de fundo.
Tente executar como bash -x intellilaunch.sh xclock
, isso deve mostrar o que está acontecendo.
Também ||
liga mais strong que &
, portanto, você envia o tubo inteiro em segundo plano. Talvez um if
explícito seja uma boa ideia.
Seu
wmctrl -a firefox || firefox & disown ; exit 1
é interpretado como
( wmctrl -a firefox || firefox ) & disown ; exit 1
enquanto você provavelmente quis dizer
wmctrl -a firefox || ( firefox & disown ) ; exit 1
Beause disso, o bash iniciará dois jobs um com o wmctl e o firefox - e outro com o disown e o exit. Como o trabalho em segundo plano precisa de um curto período de tempo para ser iniciado, ele provavelmente iniciará os comandos um pouco mais tarde, por isso a saída de bash -x
parece estar na ordem errada.