Dans un script bash, je dois lancer le navigateur Web de l'utilisateur. Il semble y avoir plusieurs façons de procéder:
$BROWSER
xdg-open
gnome-open
sur GNOMEwww-browser
x-www-browser
- ...
Existe-t-il un moyen plus standard que les autres de faire cela qui fonctionnerait sur la plupart des plates-formes, ou devrais-je simplement opter pour 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
?
ou&
dedans qui doit être cité.eval
(c'est un risque de sécurité):$BROWSER http://wwww.google.com
sensible-browser
.Réponses:
xdg-open
est standardisé et devrait être disponible dans la plupart des distributions.Autrement:
eval
est le mal, ne l'utilisez pas.Voici un exemple:
Peut-être que cette version est légèrement meilleure (toujours non testée):
la source
-s
option, mais cela ne semble pas exister sous Linux.)which
pour détecter les binaires ?fonctionne sur de nombreuses plateformes
la source
webbrowser
module!python -m webbrowser file:///usr/share/doc/python/FAQ.html
OSX:
ou
ou simplement...
la source
Vous pouvez utiliser les éléments suivants:
Il n'exécutera pas l'utilisateur mais plutôt le navigateur X par défaut du système.
Voir: ce fil.
la source
x-www-browser <url>
fait très bien le travail!Prendre les autres réponses et créer une version qui fonctionne pour tous les principaux systèmes d'exploitation, ainsi que vérifier qu'une URL est transmise en tant que variable d'exécution:
la source
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
http-server
package npm .Une fois installé (juste
npm install http-server -g
), vous pouvez mettrehttp-server -o
dans votre script bash et il lancera un serveur à partir du répertoire actuel et ouvrira un navigateur sur cette page.
la source
npm
d'être installé +http-server
package + lance un serveur Web inutile ...open
, mais c'est toujours excessif