Kar*_*arl 5 shell-script background-process subshell
在子 shell 中运行序列命令,如下所示:
(git pull;git rebase develop)&>/dev/null
Run Code Online (Sandbox Code Playgroud)
我认为这会将子 shell 及其创建的所有子进程置于后台,并将控制权返回给用户。
但实际上,终端挂了一段时间,似乎是在等待子shell中的命令完成。
任何人都可以解释为什么会发生这种情况,以及做这种工作的正确方法是什么。
如果您正在运行bashshell,则会&>/dev/null将标准输出和错误流重定向到/dev/null(与 相同>/dev/null 2>&1),但它不会将( ... )子 shell 作为异步进程运行。为此,您需要&在末尾添加额外的内容:
(git pull; git rebase develop) &>/dev/null &
Run Code Online (Sandbox Code Playgroud)
ksh93没有这个功能,POSIX 中也没有这个功能。