Právě jsem to zaznamenal na bash 4.3; přesné číslo verze je 4.3.42(1)-release (x86-redhat-linux-gnu).
$ ..
$ ...
$ ....
$ .....
Proč se nezobrazí dotaz „příkaz nenalezen“?
$ ...
$ echo $?
$ 127
Zkontroloval jsem $PATH
a alias
nic; Ani ten muž nepomáhá.
Bash běží na Fedora Linuxu, ale myslím, že to nesouvisí s OS.
UPRAVIT
Právě jsem poznamenal, že je to stejné pro jakýkoli příkaz spouštění tečkou
.za
.zaza
..za
..zaza
Přijatá odpověď:
To bylo způsobeno manipulací s příkazem-not-found ve Fedoře.
Spuštění neznámého příkazu (včetně ...
atd. pokud se žádný alias neshoduje) způsobí command_not_found_handle
spustit s chybějícím příkazem jako parametrem (viz /etc/profile.d/PackageKit.sh
pro jeho definici). V daném scénáři pak handler spustí /usr/libexec/pk-command-not-found
, opět s chybějícím příkazem jako parametrem. Dříve pk-command-not-found
jednoduše ignoroval jakýkoli příkaz začínající .
:
if (argv[1][0] == '.')
goto out;
a skončil s kódem 127.
Toto chování bylo zavedeno k opravě Red Hat #1151185, je také odkazováno v Bash, netiskne žádnou chybovou zprávu na neexistující příkazy začínající tečkou a obsahuje chybu požadující opravu (Red Hat #1292531). V FC 27 to bylo z velké části opraveno aktualizacemi od PackageKit 1.1.8 (viz tento odevzdání):nyní se zpracovávají příkazy s tečkami na začátku, pouze .
a ..
jsou ignorovány.