为什么 Bash 在某些情况下在终端中报告“未找到命令”,而在其他情况下没有?

Loo*_*vjo 1 mac bsd bash command-line pipe

通常,但并非总是如此,当我在计算机上启动终端并|在命令中使用管道 ( ) 时,pbpaste | wc例如,bash 给出-bash:  wc: command not found. (双空格不是错字)。

过了一会儿,我找到了一个解决方案:我删除了管道 ( pbpaste |wc)后面的空间,一切正常。但是当我用空格运行管道时,一切正常,bash 发现该命令完全有效,即使我几分钟前输入完全相同的命令时,它也根本不喜欢该命令。

这是它的屏幕截图:

截屏

我有两个非常相似的问题:

  • 是什么让 bash 以不同的方式对待这两行,即使它们是相同的?我不知道为什么会发生这种情况。
  • 我怎么能解决这个问题?

Kev*_*eid 9

错误信息中有问题的提示;有一个额外的空间显示:

bash:  wc: … 
Run Code Online (Sandbox Code Playgroud)

而不是:

bash: wc: …
Run Code Online (Sandbox Code Playgroud)

我从您的问题中假设您使用的是 Mac。我猜您正在使用键盘布局,在该布局中输入|字符需要使用Alt/Option键。我认为可能发生的情况是您在Alt键入空格时让手指停留在键上。

Alt+Space键入一个不间断空格而不是常规空格字符,Bash 的解析器不认为它是任何类型的空格,因此将其作为命令名称的一部分。

它第二次起作用了,因为您打字更仔细了!