Saat Anda mengetik perintah yang salah, katakan ingin Anda lakukan:
$ cd ..
$ ls
Tetapi Anda mengetik terlalu cepat dan akhirnya menekan masuk antara l dan s, sehingga Anda mendapatkan:
$ cd ..
$ l
sbash: l: command not found...
Ini terjadi sepanjang waktu tentu saja, ketika kita mengetik cepat. Yang membuat saya penasaran adalah sumber dari jeda 2,5 detik (di sistem saya) setelah teks perintah buruk muncul di layar. Menurut saya itu langsung mengenali perintah yang salah, mencetak pesan kesalahan tentangnya, tapi kemudian hanya bersenang-senang menunggu 2,5 detik sebelum mengembalikan saya ke baris perintah. Apa yang menyebabkan ini? Apakah ada cara untuk memperbaiki ini? Ini gangguan kecil, tapi saya ingin menyingkirkannya. :)
Sunting: Menjalankan sistem Fedora 16
Jawaban:
Jenis perilaku ini disebabkan oleh alat yang sering dipasang pada beberapa distribusi yang terhubung ke bash. Hook ini membuatnya sehingga jika Anda mencoba menjalankan perintah, dan perintah itu tidak ada, maka bash akan mencari file yang tersedia di repositori yang dikonfigurasi, dan memberi tahu Anda paket apa yang perlu Anda instal untuk mendapatkan perintah itu.
Jika Anda tidak menggunakan sistem Debian, Anda ingin melihat profil file startup bash Anda dan seterusnya dan melihat apakah ada yang mendefinisikan fungsi yang dinamai
command_not_found_handle
. Jika fungsi bash didefinisikan, maka itu akan dipanggil setiap kali Anda menjalankan perintah dan program yang sesuai tidak dapat ditemukan di jalur pencarian Anda. Jika Anda menjalankantypset | less
dan menelusuri keluaran, Anda akan melihatcommand_not_found_handle()
fungsinya jika telah ditentukan.Pada Debian / Ubuntu paket yang menyediakan perilaku ini tidak ditemukan perintah . Jika Anda membersihkannya, maka Anda akan menonaktifkan pencarian yang memperlambat segalanya.
Berikut ini sebuah contoh
Waktu yang tepat tentu saja akan berbeda untuk Anda. Saya menjalankan tes saya di server yang cukup gemuk.
sumber
Bagian dari pertanyaannya adalah "apakah ada cara untuk memperbaikinya (di Fedora)?" Ada: di bagian bawah file .bashrc Anda, tambahkan perintah
Anda mungkin ingin melakukannya di akhir .bashrc Anda (atau dekat dengannya) karena Anda mungkin menjalankan /etc/bashrc atau skrip bash lainnya di bagian atas .bashrc Anda.
sumber
Pada fedora, perilaku ini dapat dikontrol dengan mengubah
/etc/PackageKit/CommandNotFound.conf
file konfigurasi.Pengaturan
SoftwareSourceSearch=false
akan menghilangkan penundaan karena tidak akan mencoba menemukan paket dengan perintah yang hilang menggunakan manajer paket.Anda juga dapat mengubah jumlah waktu yang dibutuhkan untuk menunggu pencarian paket dengan mengubah
MaxSearchTime=2000
opsi untuk menunjukkan jumlah milidetik yang Anda inginkan untuk menunggu pencarian paket untuk mengembalikan kecocokan. Saya menemukan bahwa default 2 detik tidak cukup lama untuk mengembalikan kecocokan dan hanya menyebabkan penundaan yang tidak diinginkan ketika Anda salah ketik.Entah
MaxSearchTime
untuk memberikan hasil yang bermanfaat atau menonaktifkanSoftwareSourceSearch
untuk menghilangkan penundaan sama sekali.sumber