meaning - bash traduccion
¿Manera limpia de iniciar el navegador web desde el script de shell? (5)
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 GNOME -
www-browser
-
x-www-browser
- ...
¿Hay alguna manera más estándar que los demás para hacer esto que funcionaría en la mayoría de las plataformas, o debería ir con 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
OSX:
$ open -a /Applications/Safari.app http://www.google.com
o
$ open -a /Applications/Firefox.app http://www.google.com
o simplemente...
$ open some_url
Es posible que esto no se aplique exactamente a lo que desea hacer, pero existe una manera muy sencilla de crear e iniciar un servidor utilizando el paquete http-server
npm .
Una vez instalado (solo npm install http-server -g
) puedes poner
http-server -o
en su secuencia de comandos bash y se iniciará un servidor desde el directorio actual y abrir un navegador a esa página.
Puede usar lo siguiente:
x-www-browser
No ejecutará el navegador X predeterminado del usuario sino el del sistema.
Ver: este hilo.
xdg-open
está estandarizado y debería estar disponible en la mayoría de las distribuciones.
De otra manera:
-
eval
es malo, no lo uses. - Cita tus variables.
- Use los operadores de prueba correctos de la manera correcta.
Aquí hay un ejemplo:
#!/bin/bash
if which xdg-open > /dev/null
then
xdg-open URL
elif which gnome-open > /dev/null
then
gnome-open URL
fi
Tal vez esta versión sea un poco mejor (aún no probada):
#!/bin/bash
URL=$1
[[ -x $BROWSER ]] && exec "$BROWSER" "$URL"
path=$(which xdg-open || which gnome-open) && exec "$path" "$URL"
echo "Can''t find browser"
python -mwebbrowser http://example.com
funciona en muchas plataformas