Почему звездочка или строка звездочек в качестве команды bash возвращает «boost_1_69_0: команда не найдена»?

Почему звездочка или строка звездочек в качестве команды bash возвращает «boost_1_69_0: команда не найдена»?

Я немного сбит с толку и удивлен, но я просто случайно нажал на клавиатуру и набрал:

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

на что мой bash Ubuntu 22 ответил:

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$ 

и он его выполнит ;)

Связанный контент