背景:我通过 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
如上所述:时间问题;在终端服务器启动和打开新终端之间引入睡眠。 :)