SSH経由でリモートでログインすると、シェルスクリプトで新しいgnome端末を起動できません

SSH経由でリモートでログインすると、シェルスクリプトで新しいgnome端末を起動できません

背景:WindowsコンピュータからPuttyを介してLinuxコンピュータにSSHとして接続します。私はWindowsでVcXsrvを実行し、SSH経由でXを渡しています。これらすべてが期待どおりに機能します。

新しいモニターでGNOME端末を開くのに問題があります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
....

-修理する-

解決策は、コマンド間に少しの遅延を追加することです。サーバー設定はスクリプトで許可するよりも時間がかかるため、サーバーが実際に実行される前に端末が接続しようとします。

ジョブスクリプト:

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

答え1

上記のように、ターミナルサーバーの起動と新しいターミナルオープンの間にスリープモードが発生するタイミングの問題。 :)

関連情報