通过 ssh 远程登录时无法从 shell 脚本启动新的 gnome 终端

通过 ssh 远程登录时无法从 shell 脚本启动新的 gnome 终端

背景:我通过 Windows 计算机上的 Putty SSH 到我的 Linux 计算机。我在 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
$

但是,当我将相同的命令放入 shell 脚本中时,出现以下错误:

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

我什至尝试通过执行与脚本共享所有 shell 变量

$ 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

如上所述:时间问题;在终端服务器启动和打开新终端之间引入睡眠。 :)

相关内容