如何自动触发多个 gnome-terminal windows 并保持它们打开和活动?

How to trigger multiple gnome-terminal windows automatically and keep them open and active?

代码的相关部分是:

主要代码

#.....some code

send "flag1\r"
exec gnome-terminal -t "tab1" -x bash "$HOME_PATH/scripts/startTask1.tcl"
send "flag2\r"
exec gnome-terminal -t "tab2" -x bash "$HOME_PATH/scripts/startTask2.tcl"

#.....some code

startTask1.tcl

#.....some code
expect "flag for task2 to go"
send "flag3\r"
interact
send "flag4\r"

#.....some code

然后我发现,可以看到flag1和flag3的打印,window "tabl"打开了,但是tab2无法触发。

我试图关闭 tabl windows,然后 tab2 打开了。但是,我想要的是让这 2 windows 自动打开。

我的理解是:"interact"把控制权给了,那么下一个终端应该会自动打开吧?

我是新手,所以上面的一些词可能不准确。非常感谢您的回复,谢谢。

我可能弄错了,但我相信名为终结者的程序是唯一同时使用多个 shell 的选项卡式 shell。不过请注意,调用的顺序可能看起来是同时的,但实际上它们将按照可以根据脚本顺序解析的时间间隔将内容放入用户空间、内核空间或交换空间的顺序进出内存。

您的问题是外部程序正在等待 gnome-terminal 进程完成才能继续下一步。它在从属进程(我猜是预期的?)完成时完成。

您可以通过在 exec:

的末尾放置一个 & 作为单独的参数来同时 运行
exec gnome-terminal -t "tab1" -x bash "$HOME_PATH/scripts/startTask1.tcl" &

但是,您将无法通过这种方式让这两个任务轻松地相互协作,因为它们在幕后使用单独的虚拟终端。事实上,每个 gnome-terminal 将有一个虚拟终端,每个 expect.

将有一个(至少)另一个虚拟终端

我认为你需要后退几步,找出你真正想做的事情。可能有多种方法可以做到这一点,但他们可能需要一种与您当前使用的方法不同的方法,这种方法看起来注定要失败。