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