Dlaczego nie znaleziono dużego opóźnienia po wydaniu polecenia?


18

Często, gdy błędnie wpisuję polecenie, takie jak ls (np. Nacisnę ENTER, zanim napiszę „s”), pojawia się długie (~ 2 s) opóźnienie po wyświetleniu przez terminal:

bash: l: command not found...

Rozumiem powody podobnego opóźnienia po wprowadzeniu niepoprawnego hasła według: Dlaczego występuje duże opóźnienie po wprowadzeniu nieprawidłowego hasła? . Ale po co opóźniać nierozpoznane polecenie? Czy FAIL_DELAYw /etc/login.defswpływa to również?


8
Być może Fedora używa teraz również tej strasznej pomyłki w Ubuntu, która mówi ci: „Ten program nie jest zainstalowany, aby go zainstalować, wpisz ...”? Opóźnienie jest następnie spowodowane przeszukaniem bazy danych wszystkich instalowalnych pakietów. Spróbuj wywołać psql (część PostgreSQL), który prawdopodobnie nie jest domyślnie zainstalowany, ale mam nadzieję, że znajduje się w repozytoriach.
Ulrich Schwarz

Co daje echo "$PROMPT_COMMAND"wynik?
rozcietrzewiacz

echo "$ PROMPT_COMMAND": printf "\ 033] 0;% s @% s:% s \ 007" "$ {USER}" "$ {HOSTNAME %%. *}" "$ {PWD / # $ HOME / ~ } "
paislee

jakie echo drukuje $ PATH? Twój system jest tam sprawdzany za każdym razem, gdy naciskasz klawisz powrotu.
Hanan N.,

Odpowiedzi:


19

po kilku badaniach znalazłem to :

  • spróbuj odinstalować pakiet „nie znaleziono komendy”, a $>yum remove command-not-foundnastępnie zainstaluj go ponownie przy pomocy >$yum install command-not-found(na wypadek, gdyby ten pakiet był zainstalowany w systemie).

jeśli to nie pomoże, spróbuj:

  • dodaj to do swojego ~/.bashrcpliku:

    unset command_not_found_handle


2
Druga sugestia usunęła opóźnienie. Nie mam zainstalowanego pakietu, którego nie znaleziono. Dzięki!
paislee

Kwestionuję osąd tego, kto uważał za dobry pomysł, aby włączyć to domyślnie
fostandy

16

Odkryłem, że najlepszym rozwiązaniem, przynajmniej na Fedorze, jest modyfikacja pliku konfiguracyjnego
/etc/PackageKit/CommandNotFound.conf

jako największy opóźnienie wynika z wyszukiwania pakietów do zainstalowania, jeśli modyfikować SoftwareSourceSearch=truew SoftwareSourceSearch=false

opóźnienie wynosi prawie 0, a Ty wciąż ostrzegasz o błędach w pisowni, co może być przydatne.


3

Fedora używa czegoś podobnego.

Jeśli chcesz po prostu usunąć tę funkcję, użyj:

yum remove PackageKit-command-not-found

Kontynuacja: zapomniałem wspomnieć, że jeśli usuniesz ten pakiet, pojawi się komunikat o błędzie: bash: /usr/libexec/pk-command-not-found: No such file or directory Aby to naprawić, utwórz plik po usunięciu pakietu, / usr / libexec / pk-command-not-found z następującymi: #!/bin/sh echo "Command not found: $1" Zostanie wydrukowane: Nie znaleziono polecenia: fail-command

0

W moim przypadku jest to spowodowane znanym błędem proxy w / 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]

Moja konfiguracja serwera proxy jest prawidłowa, ponieważ pobieranie tego samego adresu URL za pomocą polecenia gołego curl kończy się natychmiast.

Sprawdziłem, czy proces pk-command-not-found ma konfigurację proxy:

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

Jednak nie używa go z nieznanego powodu.

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.