在zsh的手册中,在Jobs& amp;信号,它说:
如果作业以
&|
或&!
开始,则该作业会立即被取消。
立即取消工作的两种方式之间是否存在一些差异?如果没有,那为什么有两种不同但非常相似的方式呢?
答案 0 :(得分:3)
有趣的问题。我克隆了git repo,开始查看它添加的位置,我发现将信息添加到手册的提交是初始提交。这可能意味着CVS的更改不是通过保留提交完成的,但是当我看到提交是从2009年开始时,我还没有进一步查看。
然后我看了一下代码,答案就在于此。在令牌列表中有
...
"&|", /* AMPERBANG 30 */
...
当解析器接近&符并看到'!'时或'|'在它之后,它会在读取令牌时自动返回AMPERBANG
。从这一点来看,这两者之间没有区别。
我想我的回答是在当前版本的ZSH 中,这两者之间没有区别。
从代码中看,它看起来像是与键盘相关的东西。在代码中有很多地方使用这两个相同的含义(字面上if (d == '!' || d == '|')
出现很多次。我发现的唯一与键盘相关的原因是,显然,在瑞士键盘上,你可以键入|
使用AltGr+1
美国(和类似)布局中的感叹号由Shift+1
生成。我发现了其他原因,但由于用户的受众较少,因此极不可能。