“我为什么能这样做?”;cmd&;cmd2“;在zsh而不是bash中?

“我为什么能这样做?”;cmd&;cmd2“;在zsh而不是bash中?,bash,shell,zsh,background-process,Bash,Shell,Zsh,Background Process,为什么我可以在zsh中执行此操作: zsh$ sleep 5 &; echo foo [1] 14742 foo 但不是在bash bash$ sleep 5 &; echo foo bash: syntax error near unexpected token `;' 在bash中有没有其他类似的方法?一种方法是为后台进程生成一个子shell: bash$ sleep 5 &; echo foo bash: syntax error near unexpected

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

zsh$ sleep 5 &; echo foo
[1] 14742
foo
但不是在bash

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

在bash中有没有其他类似的方法?

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

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

但我不确定它是否严格等同于您正在寻找的内容。

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

bash$ (sleep 5 &); echo foo

但我不确定它是否严格等同于您所寻找的意义。

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

sleep 5 & echo foo
它也适用于
zsh

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

; echo foo

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

sleep 5 & echo foo
它也适用于
zsh

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

; echo foo

文档将在这里:--我假设关键短语是“一个或多个管道的序列”(强调我的文档)文档将在这里:--我假设关键短语是“一个或多个管道的序列”(强调我的文档)