[英]How to start new gnome-terminal with blocking call?
我需要从脚本中打开一个新终端,但是我想等待该终端退出,然后再继续执行其余脚本。 我知道
gnome-terminal -e 'nano test.txt'
打开一个新的终端窗口,并在nano中打开“ test.txt”,但不会阻止调用脚本。 有没有办法在继续原始脚本之前等待新终端退出?
例如,您可以使用&&
(另请参见shell命令中“ &&”的目的是什么? ):
gnome-terminal -e 'nano test.txt' && sleep 5 && echo "Done"
为了读者的利益:@Feiteira的答案以前是正确的答案,但gnome-terminal
不再支持。 选项--disable-factory
已从 gnome-terminal
删除 。
在这里解释几个人的不同看法:
如果它是第一个实例,则gnome-terminal
仅阻止。 然后,该单个实例充当gnome-terminal
将来所有调用的服务器。 然后,这些其他gnome-terminal
调用将所有内容移交给该服务器,并立即终止。 因此,您可以观察到两种行为:“阻塞”(当它是一个唯一实例时)和“非阻塞”(当另一个实例已经在运行时)。
有一个包装器 ,例如Ubuntu 16.04使用的包装器 ,可以模拟该缺少的选项。 但是,该包装器很复杂。 这是通过启动另一个服务器(具有另一个服务名称)来完成的。 对于该服务器,同样的假设成立(您可以将其他gnome-terminal
附加到该服务器,然后其他gnome-terminal
也可以立即返回)。
我的建议是停止使用gnome-terminal
并切换到可以立即使用的功能。 例如,对于成熟的终端窗口, xfce4-terminal
正式支持所有那些绝对必要的选项:
xfce4-terminal --disable-server -x nano test.txt
此外, xfce4-terminal
引入了--hold
,它使您可以查看命令的输出。 可悲的是--hold
有一个错误(至少在Ubuntu 16.04下),这会导致它(经常)截断输出(如果命令终止,则终端关闭得太早了,因此PTY的所有仍缓冲输出不会使它停止运行)。如果您对PTY不够小心,这是一个非常知名的常见错误)。
您想要的选项是:--disable-factory
gnome-terminal --disable-factory ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.