web-dev-qa-db-ja.com

sshを介してリモートログインすると、シェルスクリプトから新しいgnomeターミナルを起動できません

背景:WindowsマシンのPuTTYを介してLinuxマシンにSSHで接続します。 WindowsでVcXsrvを実行し、SSH経由でXを転送しています。これはすべて期待どおりに機能しています。

新しいディスプレイでgnome-terminalを開くときに問題が発生しますbashスクリプトを介してコマンドを実行する場合

これらのコマンドをコンソールで直接実行すると、新しいターミナルサーバーが起動し、サーバーに接続するgnomeターミナルセッションを開始できます。

$ /usr/libexec/gnome-terminal-server --app-id my.foo &
[1] 29553
$ gnome-terminal --app-id my.foo
$

ただし、同じコマンドをシェルスクリプトに配置すると、次のエラーが発生します。

startGnomeTerm.shの内容

#!/bin/bash
/usr/libexec/gnome-terminal-server --app-id my.foo &
gnome-terminal --app-id my.foo

スクリプト実行時

$ ./startGnomeTerm.sh
# Error creating terminal: The name my.foo was not provided by any .service files

実行して、すべてのシェル変数をスクリプトと共有しようとさえしました

$ export > Shell_vars

次に、これをスクリプトの先頭に配置します。

#!/bin/bash
source Shell_vars
....

-UPDATE-

解決策は、コマンド間にわずかな遅延を追加することです。サーバーのセットアップにはスクリプトで許可されているよりも時間がかかるため、サーバーが実際に実行される前に端末が接続を試みました。

作業スクリプト:

#!/bin/bash
/usr/libexec/gnome-terminal-server --app-id my.foo &
sleep 0.5
gnome-terminal --app-id my.foo
1
Chris Keeser

上で説明したように:タイミングの問題。ターミナルサーバーの起動から新しいターミナルを開くまでの間にスリープを導入します。 :)

0
tink