如果您从 bash shell 运行 say Nemo,则在结束 Nemo 进程之前,您将无法从该 shell 执行任何其他命令。
这就是我的问题。我希望能够运行其他命令而不必打开另一个 shell 并且不必结束已启动的进程。
Sté*_*las 11
exec Nemo
Run Code Online (Sandbox Code Playgroud)
不会Nemo 在shell子进程中运行,即会Nemo在shell的进程中执行,所以将shell替换为Nemo.
但看起来这不是你想要的。
看起来您在这里想要的是在单独的进程中运行的命令,但 shell在发出下一个提示之前不要等待该进程完成。
为此,您将使用:
Nemo &
Run Code Online (Sandbox Code Playgroud)
那是Nemo异步运行的。当它从交互式 shell 完成时,Nemo也会被置于后台,以防止从终端读取或在按下 Ctrl+C 时被 SIGINT 杀死。
请注意,该命令仍将位于 shell 的作业表中。您可以使用 将其放回前台fg。shell 也会在退出时尝试杀死它(至少在某些 shell 中)。
对于包括 在内的一些 shell bash,您还可以使用该disown命令告诉 shell 忘记它。使用zsh,您还可以将其启动为:
Nemo &!
Run Code Online (Sandbox Code Playgroud)
在后台启动它并立即否认它。