如果我在另一个 shell 脚本 (main.sh) 中调用 shell 脚本 (inner.sh),则第一个脚本 (main.sh) 将等待 inner.sh 结束,然后再继续。如果inner.sh 失败,main.sh 也会失败。
例如:
cat .main.sh
#!/bin/bash
bin/bash .inner.sh
main.sh只有在inner.sh结束后才会结束。
如何在单独的进程中运行inner.sh(不是子进程,不是同一进程并且不与main.sh并行)?
我想做的是让 main.sh 继续执行,无论inner.sh发生什么情况。
答案1
/bin/bash .inner.sh &
.inner.sh
作为子进程运行,但.inner.sh
仍然是进程的一部分.main.sh
但如果你想.inner.sh
作为一个完全独立的进程运行那么你可能想要这样做
/bin/bash .inner.sh & disown
或者
nohup /bin/bash .inner.sh &
它们.inner.sh
作为一个完全独立的进程运行。因此,即使您^C
超出了您的.main.sh
,您.inner.sh
仍然会运行(假设您^C
在解释器执行了disown
or后执行了操作nohup
)。