En un script bash, necesito iniciar el navegador web del usuario. Parece que hay muchas formas de hacer esto:
$BROWSER
xdg-open
gnome-open
en GNOMEwww-browser
x-www-browser
- ...
¿Existe una forma más estándar que las demás de hacer esto que funcione en la mayoría de las plataformas, o debería elegir algo como esto?
#/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
fuente
fuente
?
o&
que deba ser citado.eval
(es un riesgo de seguridad):$BROWSER http://wwww.google.com
sensible-browser
.Respuestas:
xdg-open
está estandarizado y debería estar disponible en la mayoría de las distribuciones.De otra manera:
eval
es malvado, no lo uses.Aquí hay un ejemplo:
Quizás esta versión sea un poco mejor (aún no probada):
fuente
-s
opción, pero eso no parece existir en Linux.)which
para detectar binarios ?funciona en muchas plataformas
fuente
webbrowser
módulo!python -m webbrowser file:///usr/share/doc/python/FAQ.html
OSX:
o
o simplemente...
fuente
Puedes usar lo siguiente:
No ejecutará el navegador X predeterminado del usuario, sino el del sistema.
Ver: este hilo.
fuente
x-www-browser <url>
hace el trabajo muy bien!Tomando las otras respuestas y creando una versión que funcione para todos los sistemas operativos principales, además de verificar para asegurarse de que se pase una URL como una variable de tiempo de ejecución:
fuente
Es posible que esto no se aplique exactamente a lo que desea hacer, pero existe una manera realmente fácil de crear e iniciar un servidor utilizando el
http-server
paquete npm .Una vez instalado (solo
npm install http-server -g
) puedes ponerhttp-server -o
en su script bash y lanzará un servidor desde el directorio actual y abrirá un navegador a esa página.
fuente
npm
ser instalado +http-server
paquete + inicia un servidor web innecesario ...open
, pero aún es excesivo