Чистый способ запуска веб-браузера из оболочки script?
В bash script мне нужно запустить веб-браузер пользователя. Кажется, есть много способов сделать это:
-
$BROWSER
-
xdg-open
-
gnome-open
в GNOME
-
www-browser
-
x-www-browser
- ...
Есть ли способ больше, чем другие, чтобы работать на большинстве платформ, или мне нужно просто пойти с чем-то вроде этого:
#/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
Ответы
Ответ 1
xdg-open
стандартизирован и должен быть доступен в большинстве дистрибутивов.
В противном случае:
-
eval
- зло, не используйте его.
- Введите свои переменные.
- Правильно используйте правильные тестовые операторы.
Вот пример:
#!/bin/bash
if which xdg-open > /dev/null
then
xdg-open URL
elif which gnome-open > /dev/null
then
gnome-open URL
fi
Возможно, эта версия немного лучше (еще не проверена):
#!/bin/bash
URL=$1
[[ -x $BROWSER ]] && exec "$BROWSER" "$URL"
path=$(which xdg-open || which gnome-open) && exec "$path" "$URL"
echo "Can't find browser"
Ответ 2
python -mwebbrowser http://example.com
работает на многих платформах
Ответ 3
OSX:
$ open -a /Applications/Safari.app http://www.google.com
или
$ open -a /Applications/Firefox.app http://www.google.com
или просто...
$ open some_url
Ответ 4
Вы можете использовать следующее:
x-www-browser
Он не будет запускать пользователя, а скорее будет браузером X по умолчанию.
Смотрите: этот поток.
Ответ 5
Принятие других ответов и создание версии, которая работает для всех основных ОС, а также проверка того, что URL передается в качестве переменной времени выполнения:
#!/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
Ответ 6
Это может не соответствовать точно тому, что вы хотите сделать, но есть очень простой способ создать и запустить сервер, используя http-server
пакет npm.
После установки (просто npm install http-server -g
) вы можете поместить
http-server -o
в bash script, и он запустит сервер из текущего каталога и откроет браузер на этой странице.