为什么我可以在zsh中执行"cmd&; cmd2"而不是bash?

Rob*_*ark 1 bash shell zsh background-process

为什么我可以在zsh中执行此操作:

zsh$ sleep 5 &; echo foo
[1] 14742
foo
Run Code Online (Sandbox Code Playgroud)

但不是在bash?

bash$ sleep 5 &; echo foo
bash: syntax error near unexpected token `;'
Run Code Online (Sandbox Code Playgroud)

有没有办法在bash中做同等效果的?

Bar*_*mar 10

我通常不会使用zsh,但这似乎是等效的:

sleep 5 & echo foo
Run Code Online (Sandbox Code Playgroud)

它也适用于zsh.

我检查了zsh文档,并没有看到组合的任何特殊含义&;.这似乎只是一个后台命令后跟一个空命令,它被忽略了.bash另一方面,不允许空命令; 键入时会出现相同的错误:

; echo foo
Run Code Online (Sandbox Code Playgroud)