Mengapa penundaan yang lama setelah perintah tidak ditemukan?

18

Seringkali ketika saya salah ketik perintah seperti ls (misalnya saya menekan ENTER sebelum saya mengetik 's') ada penundaan (~ 2s) yang lama setelah terminal menampilkan:

bash: l: command not found...

Saya dapat memahami alasan penundaan yang sama setelah kata sandi yang salah dimasukkan, per Mengapa ada penundaan besar setelah memasukkan kata sandi yang salah? . Tetapi mengapa menunda setelah perintah yang tidak dikenal? Apakah FAIL_DELAYdalam /etc/login.defsmemengaruhi ini juga?

paislee
sumber
8
Mungkin Fedora sekarang juga menggunakan kesalahpahaman Ubuntu yang mengerikan yang memberitahu Anda "Program ini tidak diinstal, untuk menginstalnya, ketik ..."? Penundaan tersebut disebabkan oleh pencarian basis data semua paket yang dapat diinstal. Coba panggil psql (bagian dari PostgreSQL), yang mungkin tidak diinstal secara default, tetapi mudah-mudahan ada di repositori.
Ulrich Schwarz
Apa artinya echo "$PROMPT_COMMAND"output?
rozcietrzewiacz
echo "$ PROMPT_COMMAND": printf "\ 033] 0;% s @% s:% s \ 007" "$ {USER}" "$ {HOSTNAME %%. *}" "$ {PWD / # $ HOME / ~ ""
paislee
apa yang dicetak $ PATH echo? sistem Anda diperiksa di sana setiap kali Anda menekan tombol kembali.
Hanan N.

Jawaban:

19

setelah beberapa penelitian saya menemukan ini :

  • coba hapus instalasi paket yang tidak ditemukan perintah dengan $>yum remove command-not-foundkemudian instal kembali dengan >$yum install command-not-found(jika Anda memiliki paket yang diinstal pada sistem Anda).

jika itu tidak membantu, cobalah:

  • tambahkan ini ke ~/.bashrcfile Anda :

    unset command_not_found_handle

Hanan N.
sumber
2
Saran kedua menghapus penundaan. Saya tidak menginstal paket perintah-tidak-ditemukan. Terima kasih!
paislee
Saya mempertanyakan penilaian siapa pun yang berpikir itu adalah ide yang baik untuk mengaktifkannya secara default
fostandy
16

Saya menemukan bahwa solusi terbaik, setidaknya pada Fedora, adalah memodifikasi file konfigurasi
/etc/PackageKit/CommandNotFound.conf

sebagai delay terbesar berasal dari pencarian paket untuk menginstal, jika Anda memodifikasi SoftwareSourceSearch=truedi SoftwareSourceSearch=false

penundaannya hampir 0 dan Anda masih mendapatkan peringatan tentang kesalahan ejaan, yang dapat berguna.

Bohong
sumber
3

Fedora menggunakan sesuatu yang serupa.

Jika Anda hanya ingin menghapus penggunaan fitur ini:

yum remove PackageKit-command-not-found

sumber
Tindak lanjut: Saya lupa menyebutkan jika Anda menghapus paket ini, Anda akan mendapatkan pesan kesalahan: bash: /usr/libexec/pk-command-not-found: No such file or directory Untuk memperbaiki ini buat file setelah menghapus paket, / usr / libexec / pk-command-not-found dengan yang berikut #!/bin/sh echo "Command not found: $1" ini : Ini akan mencetak: Perintah tidak ditemukan: fail-command
0

Dalam kasus saya ini karena beberapa bug proxy yang dikenal di / 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]

Konfigurasi proxy saya benar karena mengunduh URL yang sama persis dengan perintah bare curl berhasil secara instan.

Saya memeriksa proses pk-command-not-found memiliki konfigurasi proxy:

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

Namun itu tidak menggunakannya untuk beberapa alasan yang tidak diketahui.

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

Maret
sumber