Podczas wpisywania złego polecenia powiedz, że chcesz:
$ cd ..
$ ls
Zamiast tego piszesz zbyt szybko i kończysz uderzaniem, wpisując między ls, więc otrzymujesz:
$ cd ..
$ l
sbash: l: command not found...
Dzieje się tak przez cały czas, kiedy piszemy szybko. Interesuje mnie źródło 2,5-sekundowej pauzy (w moim systemie) po pojawieniu się złego tekstu polecenia na ekranie. Wydaje mi się, że natychmiast rozpoznaje złe polecenie, drukuje komunikat o błędzie, ale potem dla zabawy czeka 2,5 sekundy przed powrotem do wiersza poleceń. Co to powoduje? Czy można to naprawić? To mała irytacja, ale chciałbym się jej pozbyć. :)
Edycja: działający system Fedora 16
Odpowiedzi:
Ten typ zachowania jest spowodowany przez narzędzie często instalowane w niektórych dystrybucjach, które przechwytują bash. Ten haczyk sprawia, że jeśli spróbujesz uruchomić polecenie, a polecenie nie istnieje, wówczas bash przeszuka pliki dostępne w skonfigurowanych repozytoriach i powie ci, jaki pakiet należy zainstalować, aby uzyskać to polecenie.
Jeśli nie korzystasz z systemu Debian, powinieneś spojrzeć na profile plików startowych bash itd. I sprawdzić, czy coś definiuje funkcję o nazwie
command_not_found_handle
. Jeśli ta funkcja bash jest zdefiniowana, będzie wywoływana za każdym razem, gdy uruchomisz polecenie, a na ścieżce wyszukiwania nie będzie można znaleźć odpowiedniego programu. Jeśli uruchomisztypset | less
i przejrzysz wyjście, zobaczyszcommand_not_found_handle()
funkcję, jeśli została zdefiniowana.W systemie Debian / Ubuntu pakiet, który zapewnia takie zachowanie, nie został znaleziony . Jeśli to wyczyścisz, wyłączysz wyszukiwanie, co spowolni działanie.
Oto przykład
Dokładny czas będzie oczywiście dla ciebie inny. Testy przeprowadziłem na dość mocnym serwerze.
źródło
Część pytania brzmiała: „Czy istnieje sposób, aby to naprawić (w Fedorze)?” Jest: na dole pliku .bashrc dodaj polecenie
Prawdopodobnie zechcesz to zrobić na końcu .bashrc (lub blisko niego), ponieważ możesz uruchomić / etc / bashrc lub inne skrypty bash na górze .bashrc.
źródło
W Fedorze to zachowanie można kontrolować, zmieniając
/etc/PackageKit/CommandNotFound.conf
plik konfiguracyjny.Ustawienie
SoftwareSourceSearch=false
pozbywa się opóźnienia, ponieważ nie będzie próbował zlokalizować pakietu za pomocą brakującego polecenia za pomocą menedżera pakietów.Możesz także zmienić czas oczekiwania na wyszukiwanie pakietu, zmieniając
MaxSearchTime=2000
opcję wskazania liczby milisekund, na jaką chcesz czekać, aby wyszukiwanie pakietu zwróciło dopasowanie. Uważam, że domyślna wartość 2 sekund nie jest wystarczająco długa, aby zwrócić jakiekolwiek dopasowania, i powoduje niepożądane opóźnienie, gdy masz literówkę.Zwiększyć,
MaxSearchTime
aby zapewnić użyteczne dane wyjściowe, lub wyłączyć,SoftwareSourceSearch
aby całkowicie wyeliminować opóźnienie.źródło