如何在后台一起运行多个命令?

Tre*_*key 7 shell bash zsh background-process

我知道我可以使用&.

command &
Run Code Online (Sandbox Code Playgroud)

但是,我想运行多个命令,并cd在它们运行时进入不同的目录。
多个命令仍将依赖于我之前所在的目录。

我尝试了以下操作,但它只在后台运行最后一个命令:

command1 && command2 &
Run Code Online (Sandbox Code Playgroud)

这样做会产生解析错误:

command1 & && command2 & 
Run Code Online (Sandbox Code Playgroud)

command1完成 before很重要command2
所以我认为以下内容不能保证:

 command1 &; command2 &;  
Run Code Online (Sandbox Code Playgroud)

我没有绑定到任何特定的外壳。

Eig*_*ony 11

(command1; command2)& - 应该这样做,在 bash 中工作。

这将创建一个子shell(两个括号)并在后台运行整个子shell。

  • 或`{ command1; 命令2;} &`——在后台运行一个命令已经创建了一个子shell,所以使用`(…)`代替`{…}`是多余的。 (4认同)