指定の URL・ファイルを複数のブラウザで一気に開く Bash スクリプト (Mac・Windows 両対応)

ウェブサイトのデザイン確認のため、色々なブラウザで同じページを開きたいことがある。

それを自動化するため、こんな Bash スクリプトを書いてみた。Mac と Windows (GitBash) で使える。

#!/bin/bash

target="$1"

if [ "$target" == "" ]; then
  echo 'URL またはファイル名を指定してください'
  exit 1
fi

if [ "$(uname)" == 'Darwin' ]; then
  # Mac の場合
  # いずれのブラウザも、URL も相対ファイルパスも指定できる
  open -a 'Google Chrome' "$target"
  open -a 'Firefox' "$target"
  open -a 'Safari' "$target"
else
  # Windows の場合
  # Chrome・Firefox は URL も相対ファイルパスも問題なし
  cmd //c start chrome.exe "$target"
  cmd //c start firefox.exe "$target"
  
  if [ -f "$target" ]; then
    # ファイルパスが指定されている場合 (ファイルが存在する場合)
    # IE はフルパスを作って開く
    target_file_full_path="$(cd $(dirname "$target"); pwd)/$(basename "$target")"
    cmd //c start iexplore.exe "$target_file_full_path"
    # Edge はローカルファイルを開けないので処理しない
    echo 'Edge はローカルファイルを開けないため処理しませんでした'
    # Edge ブラウザだけ開いてあげるなら以下
    # cmd //c start microsoft-edge:
  else
    # ファイルでない場合 (URL と見なす)
    # IE と Edge を開く
    cmd //c start iexplore.exe "$target"
    cmd //c start microsoft-edge:"$target"
  fi
fi

コレを openurl みたいな名前で PATH が通っているところに保存し、$ chmod +x openurl と実行権を付与したら、

$ openurl http://example.com/

$ openurl ./local-file.html

みたいに使用する。

Mac の場合は Chrome・Firefox・Safari で、Windows の場合は Chrome・Firefox・IE・Edge で、指定の URL やファイルが開ける。


Mac と Windows それぞれで、「URL が指定された場合」と「ローカルのファイルが指定された場合」とを考慮した。

Mac の場合は特に問題なく、open -a でアプリケーションを指定し、URL なりファイルパスなりを渡せば良い。Windows における Chrome と Firefox も start コマンドを使えば問題ないので、cmd /c オプションでコマンドプロンプトを経由して実行するだけ。

手間がかかったのは Windows の IE と Edge。IE でローカルファイルを開くにはフルパスで指定する必要があるので、dirnamebasename を組合せてフルパスを生成するようにした。

Edge については、ローカルの HTML ファイルを開く術がないようだ。そもそも Edge は UWP (Universal Windows Platform) アプリなので、edge.exe みたいな書き方ではなく、microsoft-edge: で起動する。

Microsoft 公式っぽい、「Microsoft Edge Launcher」なるツールもあったのだが、コレを使ってもローカルファイルは開けず。

あと、Edge へのショートカットファイルを作り、そこに投げ込んだらどうか、という記事もあったが、ココまでいくと面倒臭いので諦めることにした。

Edge 対応はダルいのでココまで。