无法停止打开鼠标垫 GUI Windows 的 Shell 脚本中的同时步骤执行

无法停止打开鼠标垫 GUI Windows 的 Shell 脚本中的同时步骤执行
#!/bin/sh
...several lines of commands...
mousepad file.txt
zenity --info
...several more lines of commands...
exit

预期行为:我命令脚本(在本例中,通过键盘快捷键)。 A鼠标垫然后窗口在我的上打开Xfce4桌面,显示内容文件.txt。我在其中执行一些文本操作,然后手动关闭所述鼠标垫窗户。下一个,所命令的禅尼蒂正如预期的那样,窗口出现。我手动关闭它,然后执行脚本的下一步。

如果没有其他打开的脚本,该脚本可以正常工作鼠标垫任何地方的窗户。但是,如果我碰巧已经有一个或多个鼠标垫当我命令所述脚本时窗口打开(再次通过键盘快捷键),现在发生的事情是这样的:

在如此命令所述脚本之后,预期的鼠标垫窗口(显示内容的窗口)文件.txt)打开,随着禅尼蒂窗口(请注意,在本例中,表示禅尼蒂窗口打开鼠标垫窗口被我手动关闭)。这是不受欢迎的行为。

请注意,主题脚本在运行时运行良好Debian 威兹(使用系统V)。然而,在最近升级到Debian 杰西(使用系统)我开始看到改变的、不受欢迎的行为。不知道有没有说系统扮演这个...

我尝试了很多方法,包括wait命令和在行mousepad后附加&&.我也尝试过诱捕。没有什么对我有用。

是什么原因导致这种情况发生以及我该如何补救?

蒂亚!

答案1

您所描述的是当程序运行某种服务器以便新实例连接到现有实例时会发生什么。如果mousapad已经在运行,它只会连接到现有实例并立即退出。由于它立即退出,您的脚本将继续,这就是您看到 的原因zenity

修复很简单,有一个选项可以禁用此功能:

$ mousepad -h
Usage:
  mousepad [OPTION…] [FILES...]

Help Options:
  -h, --help               Show help options
  --help-all               Show all help options
  --help-gtk               Show GTK+ Options

Application Options:
  --disable-server         Do not register with the D-BUS session message bus
  -q, --quit               Quit a running Mousepad instance
  -v, --version            Print version information and exit
  --display=DISPLAY        X display to use

该选项--disable-server只需将您的脚本更改为:

#!/bin/sh
...several lines of commands...
mousepad --disable-server file.txt
zenity --info
...several more lines of commands...
exit

相关内容