(Linux) すでに実行中のアプリケーションのインスタンスをブロッキング モードで起動するにはどうすればよいですか?

(Linux) すでに実行中のアプリケーションのインスタンスをブロッキング モードで起動するにはどうすればよいですか?

説明のために Firefox を使用していますが、他のアプリケーションでも同様の問題が発生します。スクリプトは次のとおりです。

$ cat ff.sh
#!/bin/sh
firefox http://superuser.com/
echo "$?"

Firefoxが閉じている状態で、

$ ./ff.sh

Firefox を閉じるまでスクリプトはブロックされます。閉じた後にのみ終了コードが表示されます。

0

$ 

ここで、Firefox がすでに実行されているとします。スクリプトを実行すると、新しい Firefox タブが開き、最後まで実行されます。(そして、Firefox は実行し続けます。)

$ ./ff.sh
0

$ 

開始条件に関係なく、最初の例と同じ動作を実現するにはどうすればよいでしょうか。基本的には、

$ cmd &

答え1

非同期で実行されたように見えますが、実際はそうではありません。Firefox
が起動すると、既存のインスタンスがあるかどうかが確認され、見つかった場合は既存のインスタンスに制御が委任され、それ自体が終了します。そのため、混乱が生じます。

関連情報