É uma resposta muito curta, inicie node server.js
como processo em segundo plano:
#!/bin/bash
node server.js &
xdg-open http://localhost:9000/
Eu tenho um script simples para iniciar um servidor da Web node.js e abrir a URL em um navegador. No entanto, a última parte parece não funcionar, não vai abrir o URL em um navegador (ou em qualquer outro lugar).
Este é o código que eu tenho até agora:
#!/bin/bash
node server.js;
xdg-open http://localhost:9000/;
Em todo lugar que eu procuro, eu encontro o mesmo, eu tenho que usar:
xdg-open URL
mas parece funcionar apenas durante a digitação no terminal, não no arquivo startserver.sh. Ele iniciará o servidor, mas não abrirá a URL. Digitar o código em um terminal, no entanto, parece funcionar.
É confuso, por que não funciona dentro do meu script?
É uma resposta muito curta, inicie node server.js
como processo em segundo plano:
#!/bin/bash
node server.js &
xdg-open http://localhost:9000/
xdg-open
é na verdade um script de shell (no meu sistema). Ele usa heurística para adivinhar o que é seu navegador. Você pode ver o que está tentando fazer ao executá-lo a partir do script com
sh -x xdg-open http://localhost:9000/ >&/tmp/errors
Procure em /tmp/errors
por qualquer mensagem de falha.
Você também pode simplesmente substituir o xdg-open pelo nome do seu navegador, por exemplo, firefox.
Se você estiver iniciando um script a partir de um botão da área de trabalho, pode ser que, quando o iniciador chegar ao final do script, ele mate o grupo de processos. Tente adicionar um
sleep 99999
no final, para ver se é esse o caso.
Se você estiver tentando executar o startserver.sh
em algum outro lugar que não seja o seu ambiente de área de trabalho, xdg-open
poderá ter dificuldade em encontrar o navegador a ser usado. Você poderia tentar definir algumas variáveis de ambiente para ajudá-lo.