Clean way to launch the web browser from shell script?

前端 未结 6 1607
独厮守ぢ
独厮守ぢ 2020-12-04 07:58

In a bash script, I need to launch the user web browser. There seems to be many ways of doing this:

  • $BROWSER
  • xdg-open
  • <
相关标签:
6条回答
  • 2020-12-04 08:10

    This may not apply exactly to what you want to do, but there is a really easy way to create and launch a server using the http-server npm package.

    Once installed (just npm install http-server -g) you can put

    http-server -o

    in your bash script and it will launch a server from the current directory and open a browser to that page.

    0 讨论(0)
  • 2020-12-04 08:11

    xdg-open is standardized and should be available in most distributions.

    Otherwise:

    1. eval is evil, don't use it.
    2. Quote your variables.
    3. Use the correct test operators in the correct way.

    Here is an example:

    #!/bin/bash
    if which xdg-open > /dev/null
    then
      xdg-open URL
    elif which gnome-open > /dev/null
    then
      gnome-open URL
    fi
    

    Maybe this version is slightly better (still untested):

    #!/bin/bash
    URL=$1
    [[ -x $BROWSER ]] && exec "$BROWSER" "$URL"
    path=$(which xdg-open || which gnome-open) && exec "$path" "$URL"
    echo "Can't find browser"
    
    0 讨论(0)
  • 2020-12-04 08:16

    Taking the other answers and making a version that works for all major OS's as well as checking to ensure that a URL is passed in as a run-time variable:

    #!/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
    
    0 讨论(0)
  • 2020-12-04 08:17

    You could use the following:

    x-www-browser
    

    It won't run the user's but rather the system's default X browser.

    See: this thread.

    0 讨论(0)
  • 2020-12-04 08:21

    OSX:

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

    or

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

    or simply...

    $ open some_url
    
    0 讨论(0)
  • 2020-12-04 08:32
    python -mwebbrowser http://example.com
    

    works on many platforms

    0 讨论(0)
提交回复
热议问题