Ich habe dies gerade auf bash 4.3 bemerkt; Die genaue Versionsnummer ist 4.3.42(1)-release (x86-redhat-linux-gnu).
$ ..
$ ...
$ ....
$ .....
Warum wird „Befehl nicht gefunden“ nicht angezeigt?
$ ...
$ echo $?
$ 127
Ich habe den $PATH
überprüft und der alias
nichts; Der Mann hilft auch nicht.
Die Bash läuft auf Fedora Linux, aber ich denke, es hat nichts mit dem Betriebssystem zu tun.
BEARBEITEN
Ich habe gerade festgestellt, dass dies für jeden Punktstartbefehl gleich ist
.za
.zaza
..za
..zaza
Akzeptierte Antwort:
Dies wurde durch die Command-not-found-Behandlung in Fedora verursacht.
Ausführen eines unbekannten Befehls (einschließlich ...
usw. wenn kein Alias passt) verursacht command_not_found_handle
mit dem fehlenden Befehl als Parameter auszuführen (siehe /etc/profile.d/PackageKit.sh
für seine Definition). Im gegebenen Szenario führt der Handler dann /usr/libexec/pk-command-not-found
aus , wieder mit dem fehlenden Befehl als Parameter. Bisher pk-command-not-found
ignoriert einfach jeden Befehl, der mit .
beginnt :
if (argv[1][0] == '.')
goto out;
und mit Code 127 beendet.
Dieses Verhalten wurde eingeführt, um Red Hat Nr. 1151185 zu beheben, wird auch in Bash referenziert, gibt keine Fehlermeldung bei nicht vorhandenen Befehlen aus, die mit einem Punkt beginnen, und weist einen Fehler auf, der eine Behebung anfordert (Red Hat Nr. 1292531). Es wurde in FC 27 mit Updates weitgehend behoben, seit PackageKit 1.1.8 (siehe diesen Commit):Jetzt werden Befehle mit führenden Punkten verarbeitet, nur noch .
und ..
werden ignoriert.