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



为什么我可以在 zsh 中这样做:

zsh$ sleep 5 &; echo foo
[1] 14742
foo

但不是在抨击?

bash$ sleep 5 &; echo foo
bash: syntax error near unexpected token `;'

有没有办法在 bash 中做等效的事情?

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

sleep 5 & echo foo

它也适用于 zsh .

我检查了 zsh 文档,没有看到组合&;有任何特殊意义。这似乎只是一个后台命令,后跟一个空命令,被忽略。 另一方面,bash不允许空命令;如果键入以下内容,则会收到相同的错误:

; echo foo

一种方法是为后台进程生成一个子 shell:

bash$ (sleep 5 &); echo foo

但我不确定它是否与您正在寻找的意义严格等效。

最新更新