代码之家  ›  专栏  ›  技术社区  ›  nicoulaj

从shell脚本启动web浏览器的干净方法?

  •  76
  • nicoulaj  · 技术社区  · 16 年前

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

    • $BROWSER
    • xdg-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
    
    5 回复  |  直到 16 年前
        1
  •  81
  •   Philipp    16 年前

    xdg-open 是标准化的,应该可以在大多数发行版中使用。

    否则:

    1. eval 是邪恶的,不要用它。
    2. 引用你的变量。
    3. 以正确的方式使用正确的测试运算符。

    举个例子:

    #!/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
  •  101
  •   jfs    16 年前
    python -mwebbrowser http://example.com
    

    在许多平台上工作

        3
  •  59
  •   Web_Designer    9 年前

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

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

    $ open some_url
    
        4
  •  16
  •   Joan Rieu    16 年前

    您可以使用以下选项:

    x-www-browser
    

    它不会运行用户的浏览器,而是系统默认的X浏览器。

    请参见: this thread.

        5
  •  0
  •   james-see    6 年前

    获取其他答案,制作适用于所有主要操作系统的版本,并检查以确保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
  •  -7
  •   Raphi    9 年前

    http-server npm package

    npm install http-server -g )你可以把

    http-server -o