如何从 bash shell 运行程序而不在 shell 进程中运行

如何从 bash shell 运行程序而不在 shell 进程中运行

如果您从 bash shell 运行 Nemo,则在结束 Nemo 进程之前,您将无法从该 shell 执行任何其他命令。

这就是我的问题。我希望能够运行其他命令,而不必打开另一个 shell,也不必结束已启动的进程。

答案1

exec Nemo

不会运行Nemo 在 shell 子进程中,即会Nemo在shell进程中执行,所以将shell替换为Nemo.

但看起来这不是你想要的。

这里看起来您想要的是在单独的进程中运行的命令,但 shell 不这样做等待以便在发出下一个提示之前完成该过程。

为此,您可以使用:

Nemo &

那是Nemo异步运行的。当它从交互式 shell 完成时,Nemo也会置于后台,以便防止从终端读取或在按 Ctrl+C 时被 SIGINT 杀死。

请注意,该命令仍将位于 shell 的作业表中。您可以使用 将其放回前台fg。 shell 退出时也会尝试杀死它(至少在某些 shell 中)。

对于包括 在内的某些 shell bash,您还可以使用该disown命令告诉 shell 忘记它。使用zsh,您还可以将其启动为:

Nemo &!

在后台启动它并立即否认它。

答案2

你的意思是如何在后台执行命令?

您可以通过使用“&”完成此类命令来完成此操作

例子:

$ nemo &

相关内容