Se eu entendi corretamente, você quer:
- inicie um serviço node.js
- inicie um navegador
- visite o serviço no navegador
Primeiro, inicie o navegador após um determinado atraso. Em seguida, inicie o serviço e deixe-o rodar em primeiro plano. O operador de e comercial duplo força o comando "próximo" a aguardar o comando "primeiro" sair com um código 0, enquanto o único "e" comercial significa "iniciar em segundo plano". Podemos usar isso para comprar o serviço algum tempo para aquecer antes que o navegador tente acessá-lo.
#!/bin/sh
awhile=3
sleep $awhile && firefox http://localhost:3000/ &
node netservice.js
Se isso ajudar, você pode pensar no foo && bar &
como uma chamada assíncrona que garante que o foo será concluído antes que a barra seja chamada.