干净的方式从shell脚本启动Web浏览器?

在bash脚本中,我需要启动用户Web浏览器。 似乎有很多方法可以做到这一点:

  • $BROWSER
  • xdg-open
  • gnome-open上的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"
    

    python -mwebbrowser http://example.com
    

    在许多平台上工作


    OSX:

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

    要么

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

    或者干脆...

    $ open some_url
    
    链接地址: http://www.djcxy.com/p/57057.html

    上一篇: Clean way to launch the web browser from shell script?

    下一篇: How to check if command exists in a shell script?