Como eu abro um URL de um script bash?

1

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?

    
por Wouter 25.08.2014 / 19:21

2 respostas

1

É uma resposta muito curta, inicie node server.js como processo em segundo plano:

#!/bin/bash
node server.js &
xdg-open http://localhost:9000/
    
por A.B. 22.06.2015 / 10:59
1

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.

    
por meuh 22.06.2015 / 11:24