Shell 什么';这就是&;之间的区别;!及在zsh?

Shell 什么';这就是&;之间的区别;!及在zsh?,shell,zsh,jobs,Shell,Zsh,Jobs,在zsh的手册中,在关于作业和信号的部分,它说: 如果作业是用&或&,则该作业立即被拒绝 两种立即放弃工作的方式有什么区别吗?如果没有,那么为什么有两种不同但非常相似的方法呢?有区别吗? 有趣的问题。我克隆了git repo,开始查找它的添加位置,我发现将信息添加到手动的提交是初始提交。这可能意味着对CVS的更改并不是为了保存提交,但当我看到提交是从2009年开始的时候,我没有再进一步查看 然后我看了一下代码,找到了答案。在令牌列表中有 ... "&|", /* AMPERB

在zsh的手册中,在关于作业和信号的部分,它说:

如果作业是用
&
&,则该作业立即被拒绝

两种立即放弃工作的方式有什么区别吗?如果没有,那么为什么有两种不同但非常相似的方法呢?

有区别吗? 有趣的问题。我克隆了git repo,开始查找它的添加位置,我发现将信息添加到手动的提交是初始提交。这可能意味着对CVS的更改并不是为了保存提交,但当我看到提交是从2009年开始的时候,我没有再进一步查看

然后我看了一下代码,找到了答案。在令牌列表中有

...
"&|",       /* AMPERBANG      30 */
...
当解析器接近符号and并看到“!”时或者在它之后加上“|”,它会自动返回
AMPERBANG
,作为标记读取。从这一点来看,这两者之间没有区别

我想我的答案是,在ZSH的当前版本中,这两个版本之间没有区别

为什么有两个不同的标记具有相同的含义?
从代码上看,它似乎是一个键盘相关的东西。在代码中有很多地方这两个词的含义相同(字面意思是
if(d=='!'| | d=='|')
多次出现在那里。我发现的唯一与键盘相关的原因是,显然,在瑞士键盘上,你可以使用
AltGr+1
在美国的where(和类似)键入
布局感叹号是由
Shift+1
产生的。我还发现了其他原因,但由于用户群有限,这种可能性很小。

浏览
man zshall
,我找不到这两个操作符的任何分离(它们总是成对讨论),所以我怀疑它们只是同义词。我只能猜测原因。从历史上看,这似乎不是两个字符都被使用的情况,因此
zsh
只是提供了这两个字符;也许这是不同国际键盘上字符的位置问题。