运行 另一个进程中的 bash 脚本

Run a bash script in another process

所以我正在制作一个简单的脚本来加载两个脚本和一个命令,但是为了争论起见,让我们保持简单而不涉及许多项目的细节。

如你所知,我在 Raspbian 环境中工作。这是最新版本。如果重要的话,我在 raspberry pi 3B+。我的 pi 设置为在控制台中启动,因此我可以立即 运行 这个脚本(通过别名)。

继续,我们里面有三个脚本,比方说 originalScript.sh:

~loop.sh

~processStart.sh

~startx (this is specific, but in case you don't know, this is the command used in raspberry pi terminal ((and probably any Linux GUI system)) that initiates the OS's GUI)

问题。这个命令需要以最后一个 startx 命令结束,GUI 将加载 processStart.sh 到 运行。问题是 loop.sh 也需要 运行,但是当它是第一个或第二个命令时,永远不会到达后面的命令。我会把它放在最后,但是当我启动 startx 时,脚本会随着 GUI 的加载而中断(因此需要您打开一个新终端并重新启动带有错误的原始脚本((因为 GUI 已经加载。)))

有没有办法让 loop.sh 作为进程启动或在另一个会话中打开,而 startx 可以吗?我试过了

`source ~/loop.sh`

`bash ./loop.sh`

和脚本中的其他一些人,但他们做同样的事情;在同一个 window 中启动脚本。当这种情况发生时,正如预期的那样,当循环开始时,程序的其余部分直到它结束才会发生。

如果我不能那样启动那个脚本,从逻辑上讲会有另一种方法可以通过一个脚本同时 运行 它吗?

在此先感谢您的帮助!

在 bash 中,loop.sh 可以通过在命令后附加一个符号来作为后台进程启动。 (即,loop.sh &)该命令将在后台 运行,脚本的其余部分将继续 运行。

请注意,如果 loop.sh 正在做任何需要在 startx 之前完成的事情,您必须向脚本添加额外的逻辑以检查 startx 是否已准备好运行.

source loop.sh 将在当前 shell 中导致 运行 loop.sh,并且不会 return 直到 loop.sh 退出。

bash loop.sh 将启动一个新的 bash 进程和 运行 loop.sh。在 bash 进程退出之前,脚本不会继续。