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

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

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

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

以下是该事件的截图:

截屏

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

  • 为什么 bash 会以不同的方式处理这两行,即使它们是相同的?我不知道为什么会发生这种情况。
  • 我该如何修复这个问题?

答案1

错误信息中对问题进行了提示;有一个额外的空格显示:

bash:  wc: … 

而不是:

bash: wc: …

从你的问题来看,我猜你使用的是 Mac。我猜你使用的键盘布局|要求使用 键才能输入字符。我认为可能发生的情况是,你在输入空格时Alt/Option让手指停留在键上。Alt

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

由于您打字更仔细,所以第二次才有效!

相关内容