Wenn Sie einen falschen Befehl eingeben, sagen Sie, dass Sie Folgendes tun möchten:
$ cd ..
$ ls
Aber stattdessen tippst du zu schnell und drückst am Ende die Eingabetaste zwischen l und s, sodass du Folgendes erhältst:
$ cd ..
$ l
sbash: l: command not found...
Das passiert natürlich die ganze Zeit, wenn wir schnell tippen. Ich bin gespannt auf die Quelle der Pause von 2,5 Sekunden (auf meinem System), nachdem der fehlerhafte Befehlstext auf dem Bildschirm angezeigt wurde. Mir scheint, dass es den fehlerhaften Befehl sofort erkennt, eine Fehlermeldung darüber ausgibt, aber dann nur zum Spaß 2,5 Sekunden wartet, bevor es mich zur Befehlszeile zurückbringt. Wodurch wird das verursacht? Gibt es eine Möglichkeit, dies zu beheben? Es ist ein kleines Ärgernis, aber ich möchte es loswerden. :)
Bearbeiten: Ausführen von Fedora 16-System
Antworten:
Diese Art von Verhalten wird durch ein Tool verursacht, das häufig auf einigen Distributionen installiert wird, die sich in bash einbinden. Dieser Hook bewirkt, dass wenn Sie versuchen, einen Befehl auszuführen und dieser Befehl nicht vorhanden ist, bash die in den konfigurierten Repositorys verfügbaren Dateien durchsucht und Ihnen mitteilt, welches Paket Sie installieren müssten, um diesen Befehl zu erhalten.
Wenn Sie nicht auf einem Debian-System arbeiten, sollten Sie sich die Profile Ihrer Bash-Startdateien usw. ansehen und prüfen, ob irgendetwas die genannte Funktion definiert
command_not_found_handle
. Wenn diese Bash-Funktion definiert ist, wird sie jedes Mal aufgerufen, wenn Sie einen Befehl ausführen und ein entsprechendes Programm in Ihrem Suchpfad nicht gefunden wird. Wenn Sietypset | less
die Ausgabe ausführen und durchsuchen, wird diecommand_not_found_handle()
Funktion angezeigt, sofern sie definiert wurde.Unter Debian / Ubuntu wurde das Paket, das dieses Verhalten bietet, nicht gefunden . Wenn Sie das bereinigen, deaktivieren Sie die Suchvorgänge, was die Dinge verlangsamt.
Hier ist ein Beispiel
Die genaue Uhrzeit wäre natürlich für Sie anders. Ich habe meine Tests auf einem ziemlich bulligen Server durchgeführt.
quelle
Ein Teil der Frage war "Gibt es eine Möglichkeit, dies zu beheben (in Fedora)?" Es gibt Folgendes: Fügen Sie am Ende Ihrer .bashrc-Datei den Befehl hinzu
Möglicherweise möchten Sie dies am Ende Ihrer .bashrc-Datei (oder in der Nähe davon) tun, da Sie möglicherweise / etc / bashrc oder andere bash-Skripts oben in Ihrer .bashrc-Datei ausführen.
quelle
Auf fedora kann dieses Verhalten durch Ändern der
/etc/PackageKit/CommandNotFound.conf
Konfigurationsdatei gesteuert werden .Durch die Einstellung
SoftwareSourceSearch=false
wird die Verzögerung beseitigt, da mit dem Paketmanager nicht versucht wird, ein Paket mit dem fehlenden Befehl zu finden.Sie können auch die Wartezeit für eine Paketsuche ändern, indem Sie die
MaxSearchTime=2000
Option ändern , um die Anzahl der Millisekunden anzugeben, die Sie warten möchten, bis die Paketsuche eine Übereinstimmung zurückgibt. Ich finde, dass der Standardwert von 2 Sekunden nicht lang genug ist, um Übereinstimmungen zurückzugeben, und nur eine unerwünschte Verzögerung verursacht, wenn Sie einen Tippfehler haben.Erhöhen Sie entweder den Wert,
MaxSearchTime
um einen nützlichen Ausgang bereitzustellen, oder deaktivieren Sie ihnSoftwareSourceSearch
, um die Verzögerung insgesamt zu beseitigen.quelle