Czysty sposób na uruchomienie przeglądarki internetowej ze skryptu shell?

W skrypcie bash, muszę uruchomić przeglądarkę internetową użytkownika. Wydaje się, że można to zrobić na wiele sposobów:

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

Czy istnieje bardziej standardowy sposób, aby to zrobić, który działa na większości platform, czy powinienem po prostu pójść z czymś takim:

#/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
Author: nicoulaj, 2010-06-26

5 answers

xdg-open jest znormalizowany i powinien być dostępny w większości dystrybucji.

Inaczej:

  1. Jest złe, nie używaj go.
  2. Cytuj swoje zmienne.
  3. użyj odpowiednich operatorów testowych we właściwy sposób.

Oto przykład:

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

Może ta wersja jest nieco lepsza (wciąż niesprawdzona):

#!/bin/bash
URL=$1
[[ -x $BROWSER ]] && exec "$BROWSER" "$URL"
path=$(which xdg-open || which gnome-open) && exec "$path" "$URL"
echo "Can't find browser"
 51
Author: Philipp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-26 17:48:52
python -mwebbrowser http://example.com

Działa na wielu platformach

 75
Author: jfs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-26 17:11:45

OSX:

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

Lub

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

Lub po prostu...

$ open some_url
 34
Author: mbs400,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-06 19:20:36

Możesz użyć:

x-www-browser

To nie uruchomi użytkownika, ale raczej domyślną przeglądarkę X systemu.

Zobacz: Ten wątek.

 9
Author: Joan Rieu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-26 16:38:47

Może to nie dotyczyć dokładnie tego, co chcesz zrobić, ale istnieje naprawdę łatwy sposób na utworzenie i uruchomienie serwera za pomocą http-server pakiet npm .

Po zainstalowaniu (tylko npm install http-server -g) możesz umieścić

http-server -o

W skrypcie bash i uruchomi serwer z bieżącego katalogu i otworzy przeglądarkę do tej strony.

 -3
Author: Raphi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 18:21:52