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