Warum wurde eine lange Verzögerung nach dem Befehl nicht gefunden?

18

Wenn ich einen Befehl wie ls falsch eingebe (z. B. die EINGABETASTE drücke, bevor ich 's' eingebe), tritt häufig eine lange Verzögerung (~ 2s) auf, nachdem das Terminal Folgendes anzeigt:

bash: l: command not found...

Ich kann die Gründe für eine ähnliche Verzögerung nach Eingabe eines falschen Passworts nachvollziehen. Warum tritt nach Eingabe eines falschen Passworts eine große Verzögerung auf? . Aber warum nach einem nicht erkannten Befehl verzögern? Ist FAIL_DELAYin /etc/login.defsdieser beeinflussen auch?

Paislee
quelle
8
Vielleicht benutzt Fedora jetzt auch dieses schreckliche Ubuntu-Fehlverhalten, das Ihnen sagt "Dieses Programm ist nicht installiert, um es zu installieren, tippen Sie ..."? Die Verzögerung wird dann durch Durchsuchen der Datenbank aller installierbaren Pakete verursacht. Versuchen Sie, psql (Teil von PostgreSQL) aufzurufen, das wahrscheinlich nicht standardmäßig installiert ist, sich aber hoffentlich in den Repositorys befindet.
Ulrich Schwarz
Was wird echo "$PROMPT_COMMAND"ausgegeben?
rozcietrzewiacz
echo "$ PROMPT_COMMAND": printf "\ 033] 0;% s @% s:% s \ 007" "$ {USER}" "$ {HOSTNAME %%. *}" "$ {PWD / # $ HOME / ~ } "
paislee
Was echo $ PATH druckt? Ihr System wird dort jedes Mal überprüft, wenn Sie die Eingabetaste drücken.
Hanan N.

Antworten:

19

Nach einigen Recherchen habe ich gefunden dieses :

  • Versuchen Sie, das nicht gefundene Befehlspaket mit zu deinstallieren, $>yum remove command-not-foundund installieren Sie es dann erneut mit >$yum install command-not-found(nur für den Fall, dass Sie dieses Paket auf Ihrem System installiert haben).

wenn das nicht hilft versuche:

  • Fügen Sie dies zu Ihrer ~/.bashrcDatei hinzu:

    unset command_not_found_handle

Hanan N.
quelle
2
Der zweite Vorschlag beseitigte die Verzögerung. Ich habe das Paket command-not-found nicht installiert. Vielen Dank!
Paislee
Ich stelle das Urteil
derjenigen in
15

Ich fand, dass die beste Lösung, zumindest unter Fedora, darin besteht, die Konfigurationsdatei zu ändern
/etc/PackageKit/CommandNotFound.conf

als die größte Verzögerung von der Suche kommt für Pakete zu installieren, wenn Sie ändern SoftwareSourceSearch=truein SoftwareSourceSearch=false

Die Verzögerung beträgt fast 0 und Sie werden trotzdem vor Rechtschreibfehlern gewarnt, was nützlich sein kann.

GiP
quelle
3

Fedora verwendet etwas Ähnliches.

Wenn Sie diese Funktion nur entfernen möchten, verwenden Sie:

yum remove PackageKit-command-not-found

quelle
Follow-up: Ich habe vergessen zu erwähnen, dass beim Entfernen dieses Pakets eine Fehlermeldung bash: /usr/libexec/pk-command-not-found: No such file or directory angezeigt wird : Um dieses Problem zu beheben, erstellen Sie die Datei nach dem Entfernen des Pakets unter / usr / libexec / pk-command-not-found mit den folgenden Angaben #!/bin/sh echo "Command not found: $1" : Befehl nicht gefunden: fail-command
0

In meinem Fall liegt es an einem bekannten Proxy-Fehler in / usr / libexec / pk-command-not-found

Failed to search for file: cannot update repo 'updates':
Cannot prepare internal mirrorlist:
Curl error (28): Timeout was reached for https://mirrors.fedoraproject.org/metalink?repo=updates-released-f28&arch=x86_64 
[Connection timed out after 30002 milliseconds]

Meine Proxy-Konfiguration ist korrekt, da das Herunterladen derselben URL mit einem Bare-Curl-Befehl sofort erfolgreich ist.

Ich habe überprüft, ob der Prozess pk-command-not-found die Proxy-Konfiguration hat:

tr  '\0' '\n' < /proc/$(pgrep -f pk-command-not-found)/environ | grep -i proxy

Es wird jedoch aus unbekannten Gründen nicht verwendet.

https://bugzilla.redhat.com/show_bug.cgi?id=1553368

März
quelle