背景:我通过Windows计算机上的Putty SSH进入Linux计算机。我在Windows上运行VcXsrv,并通过SSH转发X。这一切都按预期进行。
通过bash脚本执行命令时,我遇到在新显示器上打开gnome-terminal的问题。
当我直接在控制台上执行这些命令时,新的终端服务器将启动,并且我能够启动连接到服务器的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
我什至尝试通过执行与脚本共享所有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
如上所述:时间问题;在终端服务器启动与打开新终端之间引入睡眠。:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句