117 votes

Une façon propre de lancer le navigateur Web à partir d'un script shell ?

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

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

Existe-t-il une façon plus standard que les autres de faire cela qui fonctionnerait sur la plupart des plateformes, ou devrais-je simplement aller avec quelque chose comme ça :

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

105voto

J.F. Sebastian Points 102961
python -mwebbrowser http://example.com

travaille sur de nombreuses plateformes

84voto

Philipp Points 21479

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

Autrement :

  1. eval est mauvais, ne l'utilisez pas.
  2. Citez vos variables.
  3. Utilisez les bons opérateurs de test de la bonne manière.

En 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 (encore 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"

61voto

mbs400 Points 89

OSX :

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

ou

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

ou tout simplement...

$ open some_url

17voto

Fififox Points 511

Vous pouvez utiliser ce qui suit :

x-www-browser

Il n'exécutera pas le navigateur X de l'utilisateur, mais plutôt le navigateur X par défaut du système.

Voir : ce fil.

1voto

jamescampbell Points 4293

Prendre les autres réponses et faire une version qui fonctionne pour tous les OS majeurs ainsi que vérifier qu'une URL est transmise en tant que variable d'exécution :

#!/bin/bash
if [ -z $1 ]; then
  echo "Must run command with the url you want to visit."
  exit 1
else
  URL=$1
fi
[[ -x $BROWSER ]] && exec "$BROWSER" "$URL"
path=$(which xdg-open || which gnome-open) && exec "$path" "$URL"
if open -Ra "safari" ; then
  echo "VERIFIED: 'Safari' is installed, opening browser..."
  open -a safari "$URL"
else
  echo "Can't find any browser"
fi

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X