0

「./application_name」を使用して複数のアプリケーションを起動し、それぞれを個別の端末で起動したいのですが、bash スクリプトでそれを行うにはどうすればよいですか。

4

1 に答える 1

4

あなたが何を求めているのかよくわかりませんが、これはおそらくあなたが必要としているものです:

x-terminal-emulator -e "./application_name [arguments]" &

これにより、シェルの代わりに指定されたコマンドを実行する新しいターミナル エミュレータがバックグラウンドで起動されます。

システムにエイリアスがない場合は、やx-terminal-emulatorなど、実際の端末エミュレータの名前に置き換えてください。それらは(ほとんど)すべてこのオプションをサポートしています。xtermgnome-terminal-e

もちろん、これには bash スクリプトが最初に X11 セッション内から (cron ジョブなどからではなく) 実行されている必要があります。そうしない$DISPLAYと、新しいターミナル エミュレーターを表示できる場所がなくなります。

編集:への引数がシェルの下で実行されるか、直接実行されるかどうかは、-e使用される端末エミュレーターに依存するようです。たとえばxterm、シェルの下で実行しますが、実行gnome-terminalしません。この結果として、 のような複合シェル コマンドをcd foobar; ./something & waitへの引数として指定できる場合と指定できない場合があります-e。シェルでコマンドを実行しない端末エミュレーターの回避策として、-e 'sh -c "actual command"'. 2 つのレベルの引用があるため、特殊文字の適切な引用は複雑になりますが、それは可能です。

于 2012-08-27T12:35:53.287 に答える