使用脚本 /bin/sh -c gnome-terminal 在启动时打开 4 个终端窗口

使用脚本 /bin/sh -c gnome-terminal 在启动时打开 4 个终端窗口

我尝试在启动时打开 4 个终端窗口,并使用以下脚本来实现。但是,它只打开 1 个终端窗口,而不是 4 个。

/bin/sh -c gnome-terminal; /bin/sh -c gnome-terminal; /bin/sh -c gnome-terminal; /bin/sh -c gnome-terminal

我从“启动应用程序”中运行该脚本。如果我从终端窗口手动运行该脚本,它会打开 4 个终端窗口。

所以我的问题是。为什么脚本只在“启动应用程序”中打开 1 个窗口,而它应该打开 4 个?

答案1

/bin/sh -c如果您从脚本运行它,则不需要它。此外,使用&而不是;,就像这样

#!/bin/bash



gnome-terminal -t WINDOW-ONE &
gnome-terminal -t WINDOW-TWO &
gnome-terminal -t WINDOW-THREE &
gnome-terminal -t WINDOW-FOUR &

我认为它的行为之所以像原始脚本中那样,是因为 shell 正在等待每一行脚本先完成,所以它正在等待第一个窗口完成。使用 &,您可以断开 gnome-terminal 与脚本的连接,然后脚本可以继续下一行。希望这有意义

答案2

无需使用单独的脚本在启动时运行四个终端窗口

您不需要单独的脚本来打开四个gnome-terminal窗口,您可以简单地将它们组合成一个命令,然后添加到启动应用程序中。

如何在 .desktop 文件中使用复杂命令

当您将命令添加到启动应用程序时,它实际上会.desktop在 中创建一个文件~/.config/autostart,该文件在启动时(实际上是登录时)运行您的命令。文件中使用的复杂命令的语法.desktop如下:

/bin/bash -c "<complicated_command>"

/bin/bash -c但是:你只需要使用单身的时间,因此完整的命令应该是这样的:

/bin/bash -c "gnome-terminal&gnome-terminal&gnome-terminal&gnome-terminal"

这样做的话,您就不需要单独的脚本来完成这项工作了。

链接命令

正如前面提到的,您应该用 来链接命令&,而不是用;

man bash

如果命令以控制操作符 & 结束,则 shell 会在子 shell 中在后台执行该命令。shell 不会等待命令完成,返回状态为 0。以 ; 分隔的命令按顺序执行;shell 会依次等待每个命令终止。返回状态是最后执行的命令的退出状态。

相关内容