「./application_name」を使用して複数のアプリケーションを起動し、それぞれを個別の端末で起動したいのですが、bash スクリプトでそれを行うにはどうすればよいですか。
1 に答える
あなたが何を求めているのかよくわかりませんが、これはおそらくあなたが必要としているものです:
x-terminal-emulator -e "./application_name [arguments]" &
これにより、シェルの代わりに指定されたコマンドを実行する新しいターミナル エミュレータがバックグラウンドで起動されます。
システムにエイリアスがない場合は、やx-terminal-emulator
など、実際の端末エミュレータの名前に置き換えてください。それらは(ほとんど)すべてこのオプションをサポートしています。xterm
gnome-terminal
-e
もちろん、これには bash スクリプトが最初に X11 セッション内から (cron ジョブなどからではなく) 実行されている必要があります。そうしない$DISPLAY
と、新しいターミナル エミュレーターを表示できる場所がなくなります。
編集:への引数がシェルの下で実行されるか、直接実行されるかどうかは、-e
使用される端末エミュレーターに依存するようです。たとえばxterm
、シェルの下で実行しますが、実行gnome-terminal
しません。この結果として、 のような複合シェル コマンドをcd foobar; ./something & wait
への引数として指定できる場合と指定できない場合があります-e
。シェルでコマンドを実行しない端末エミュレーターの回避策として、-e 'sh -c "actual command"'
. 2 つのレベルの引用があるため、特殊文字の適切な引用は複雑になりますが、それは可能です。