为什么以星号或一排星号作为 bash 命令会返回“boost_1_69_0:未找到命令”?

为什么以星号或一排星号作为 bash 命令会返回“boost_1_69_0:未找到命令”?

我有点困惑和好奇,但我只是不小心按下了键盘并输入了:

*******************************************

我的 Ubuntu 22 bash 返回到:

me@pc:~$ *******************************************
boost_1_69_0: command not found

我尝试了多种数量*,结果是一样的。

答案1

查看ls -l,您将在列表中看到“boost_1_69_0”作为第一个按字母顺序排列的文件或目录。

* 的数量无关紧要。bash 会看到通配符并尝试对活动目录中的所有内容执行它,然后发现它无法理解它。

我把“bin”作为第一个,它会对我抱怨“bin”:

rinzwind@schijfwereld:~$ ls -l
total 8
drwxrwxr-x 2 rinzwind rinzwind 4096 apr 23 11:24 bin
drwx------ 5 rinzwind rinzwind 4096 apr 18 22:19 snap
rinzwind@schijfwereld:~$ *
Command 'bin' not found, did you mean:
  command 'tin' from deb tin (1:2.6.2-1build1)
  command 'ben' from deb ben (0.10.1ubuntu1)
  command 'bing' from deb bing (1.3.5-5)
  command 'bip' from deb bip (0.9.3-1)
  command 'win' from deb wily (0.13.42-1)
  command 'din' from deb din (56-1)
Try: sudo apt install <deb name>

如果set -x您想了解正在发生的事情的更多详细信息(set +x以恢复)。

哦,如果你做了以下事情,情况就会变得很有趣:

./*

并在“1”内有这个:

rinzwind@schijfwereld:/discworld/tmp$ cat 1
#!/bin/bash
rinzwind@schijfwereld:/discworld/tmp$ ./*
rinzwind@schijfwereld:/discworld/tmp$ 

并且它将执行它;)

相关内容