Em um script bash, preciso iniciar o navegador do usuário. Parece haver muitas maneiras de fazer isso:
$BROWSER
xdg-open
gnome-open
no GNOMEwww-browser
x-www-browser
- ...
Existe uma maneira mais padrão do que as outras de fazer isso que funcionaria na maioria das plataformas, ou devo apenas escolher algo assim:
#/usr/bin/env bash
if [ -n $BROWSER ]; then
$BROWSER 'http://wwww.google.com'
elif which xdg-open > /dev/null; then
xdg-open 'http://wwww.google.com'
elif which gnome-open > /dev/null; then
gnome-open 'http://wwww.google.com'
# elif bla bla bla...
else
echo "Could not detect the web browser to use."
fi
bash
shell
command-line
standards
standards-compliance
nicoulaj
fonte
fonte
?
ou&
ali que precisa ser citado.eval
(é um risco à segurança):$BROWSER http://wwww.google.com
sensible-browser
.Respostas:
xdg-open
é padronizado e deve estar disponível na maioria das distribuições.De outra forma:
eval
é mau, não o use.Aqui está um exemplo:
Talvez esta versão seja um pouco melhor (ainda não testada):
fonte
-s
opção, mas ela não parece existir no Linux.)which
para detectar binários ?funciona em muitas plataformas
fonte
webbrowser
módulo!python -m webbrowser file:///usr/share/doc/python/FAQ.html
OSX:
ou
ou simplesmente...
fonte
Você pode usar o seguinte:
Ele não executará o navegador do usuário, mas sim o navegador X padrão do sistema.
Veja: este tópico.
fonte
x-www-browser <url>
faz o trabalho muito bem!Pegando as outras respostas e criando uma versão que funcione para todos os principais sistemas operacionais, além de verificar se um URL é passado como uma variável de tempo de execução:
fonte
Isso pode não se aplicar exatamente ao que você deseja fazer, mas há uma maneira realmente fácil de criar e iniciar um servidor usando o
http-server
pacote npm .Depois de instalado (apenas
npm install http-server -g
), você pode colocarhttp-server -o
em seu script bash e ele irá lançar um servidor do diretório atual e abrir um navegador para aquela página.
fonte
npm
instalação +http-server
pacote + inicia um servidor web desnecessário ...open
, mas ainda é um exagero