在bash脚本中,我需要启动用户Web浏览器。似乎有很多方法这样做:
> $ BROWSER
> xdg-open
> GNOME上的gnome-open
> 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
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"