Чистый способ запуска веб-браузера из сценария оболочки?
в bash-скрипт, мне нужно, чтобы запустить веб-браузер пользователя. Кажется, есть много способов сделать это:
$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
5 ответов:
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= [[ -x $BROWSER ]] && exec "$BROWSER" "$URL" path=$(which xdg-open || which gnome-open) && exec "$path" "$URL" echo "Can't find browser"
OSX:
$ open -a /Applications/Safari.app http://www.google.com
или
$ open -a /Applications/Firefox.app http://www.google.com
или просто...
$ open some_url
вы можете использовать следующее:
x-www-browser
Он не будет работать пользователь, а браузер по умолчанию.
посмотреть: этой теме.
Это может не относиться в точности к тому, что вы хотите сделать, но есть очень простой способ создать и запустить сервер с помощью
http-server
npm package.после установки (просто
npm install http-server -g
) можно поставить
http-server -o
в вашем скрипте bash, и он запустит сервер из текущего каталога и откроет браузер на этой странице.