Un moyen propre de lancer le navigateur Web à partir du script shell?

Dans un script bash, je dois lancer le navigateur Web utilisateur. Il semble y avoir plusieurs façons de le faire:

  • $BROWSER
  • xdg-open
  • gnome-open sur GNOME
  • www-browser
  • x-www-browser

Existe-t-il un moyen plus standard que les autres de faire cela sur la plupart des plates-formes, ou devrais-je utiliser quelque chose comme ceci:

 #/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 

xdg-open est standardisé et devrait être disponible dans la plupart des dissortingbutions.

Autrement:

  1. eval est mal, ne l’utilisez pas.
  2. Citez vos variables.
  3. Utilisez les opérateurs de test corrects de la manière correcte.

Voici un exemple:

 #!/bin/bash if which xdg-open > /dev/null then xdg-open URL elif which gnome-open > /dev/null then gnome-open URL fi 

Peut-être que cette version est légèrement meilleure (toujours non testée):

 #!/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 

fonctionne sur de nombreuses plateformes

OSX:

 $ open -a /Applications/Safari.app http://www.google.com 

ou

 $ open -a /Applications/Firefox.app http://www.google.com 

ou simplement…

 $ open some_url 

Vous pouvez utiliser les éléments suivants:

 x-www-browser 

Il n’exécutera pas le navigateur X par défaut de l’utilisateur mais du système.

Voir: ce fil

Cela peut ne pas s’appliquer exactement à ce que vous voulez faire, mais il existe un moyen très simple de créer et de lancer un serveur à l’aide du package npm http-server .

Une fois installé (juste npm install http-server -g ), vous pouvez mettre

http-server -o

dans votre script bash et il va lancer un serveur à partir du répertoire en cours et ouvrir un navigateur sur cette page.