Setelah pembaruan terbaru (Ubuntu 12,04 LTS), TAB selesai pada baris perintah lambat. Setelah memasukkan perintah parsial (mis. evi [TAB]
) Atau nama file parsial (mis. evince somedocu[TAB]
) Shell, terkadang meskipun tidak selalu, hang selama beberapa detik.
Secara pribadi, saya lebih suka autocomplete yang kurang kuat daripada yang lambat. Apakah ada perbaikan sederhana?
Sunting: Informasi tambahan terkait dengan komentar:
PATH cukup standar. ~ / bin memiliki beberapa skrip bash
$ echo $PATH /home/USERNAME/bin:/usr/local/bin:/usr/bin:/bin:/usr/games
Jumlah file dalam direktori kerja kurang dari 100.
- Fitur autocomplete sangat lambat setelah aktivitas disk yang tidak biasa (peningkatan sistem). Dengan demikian, mungkin, membaca ulang / usr / bin dan direktori lain yang menyebabkan lag.
bash
autocomplete
Jan
sumber
sumber
Jawaban:
Saya tidak tahu tentang memperbaiki - ada banyak hal yang bisa menyebabkan penundaan. Tetapi saya dapat menawarkan beberapa tips untuk menyelidiki.
Seperti dugaan, mungkin ada direktori di suatu tempat di jalur pencarian (
$PATH
, atau tempat di mana bash mencari data penyelesaian) yang ada di sistem file yang lambat merespons. Biasanya itu adalah filesystem jarak jauh yang lambat, tetapi bisa juga berupa hard disk yang gagal, driver FUSE yang hang, dll.Langkah pertama untuk menyelidiki adalah menjalankan
set -x
untuk mendapatkan jejak dari perintah yang dieksekusi shell untuk menghasilkan penyelesaian. Perhatikan di mana ia berhenti.Jika itu tidak memberikan informasi yang cukup, bawa senjata besar. Catat ID proses shell (
echo $$
). Di terminal lain, jalankanstrace -f -s9999 -p$$
(atau setara dengan strace jika dijalankan pada rasa unix lain). Strace mendaftar panggilan sistem yang dilakukan oleh proses. Lihat apakah sepertinya mengakses file yang seharusnya tidak, atau jika akses ke beberapa file lambat. Menambahkan opsi-T
kestrace
baris perintah membuatnya menunjukkan waktu yang dihabiskan dalam setiap panggilan sistem.sumber
set -x
, apa perintah yang keren. Sangat "mode hacker terlibat"set +x
untuk kembali ke mode non-debug normalJika kotak * nix Anda disetel sebagai klien LDAP, Anda mungkin mengalami masalah ini, bahkan masuk sebagai pengguna lokal.
Info debug yang membosankan: Sedang dilakukan debugging
set-x
, saya menemukan penyelesaian yang tergantung pada:Konfirmasi: Saya mengkonfirmasi ini dengan
ls ~*
yang juga digantung. Ternyata server ldap saya lamban, tetapi ini seharusnya tidak mempengaruhi hal-hal seperti penyelesaian bash dan ls!Solusi: Aha, ada bug yang diajukan terhadap bash-completion + ldap, itu akan diperbaiki dalam versi yang lebih baru, dan tambalan sederhana jika Anda tidak ingin menunggu. Penyelesaian tab cepat lagi, hore!
Inilah patchfile jika tautannya hilang. Ini hanya menghindari ~ pada baris 545 dan 547:
Anda harus keluar dari sesi ssh saat ini dan masuk kembali agar patch ini berlaku.
sumber
Coba instal ulang penyelesaian-bash
Bagi saya ini diperbaiki di Ubuntu 18.04.3 LTS
sumber
Juga beberapa orang menggunakan fitur lengkapi otomatis ekstra seperti Git bash lengkapi otomatis . Kelambatan penyelesaian Bash dapat merupakan hasil dari fitur kelengkapan otomatis tambahan yang mengalami gangguan.
Dalam kasus saya itu adalah Git bash otomatis lengkapi kunci publik git saya telah diperbarui sehingga ia melakukan upaya otentikasi gagal yang menyebabkan hang. Setelah saya menghapus selesai otomatis, itu cepat lagi. Jadi solusi saya adalah memperbaiki kunci saya dan mengaktifkannya kembali.
sumber