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