Saya pikir saya juga akan menambahkan penjelasan tambahan berikut untuk kegagalan penyelesaian bash - terlalu lama untuk komentar dan mungkin berguna bagi seseorang yang memiliki masalah dengan penyelesaian bash, karena mungkin ini adalah pertanyaan kanonik 'umum' yang semua duplikat disebut.
Bahkan jika Anda memiliki baris yang sesuai di .bashrc
(seperti pada jawaban di atas) dan bash-completion
paket yang diinstal, penyelesaian bash masih dapat mengalami kegagalan fungsi jika Anda memiliki shopt -s nullglob
atau shopt -s failglob
di dalam .bashrc
atau .bash_aliases
.
Skenario berikut diuji dengan semua kustomisasi pengguna .bashrc
dan .bash_aliases
dihapus untuk memberikan tes yang adil, dengan garis penyelesaian bash yang sesuai pada .bashrc
saat ini dan dengan yang bash-completion
diinstal.
1) Skenario pertama adalah ketika Anda memiliki shopt -s failglob
di .bashrc
atau .bash_aliases
.
Ketika mencoba masing-masing direktori dan file lengkap tab, kesalahan ini akan terjadi:
cd Dbash: no match: "${COMP_WORDS[@]}"
cat pabash: no match: words[0]=${!ref}${COMP_WORDS[i]}
Namun, perintah akan tetap berhasil diselesaikan.
2) Dengan shopt -s nullglob
diaktifkan, mencoba tab untuk menyelesaikan direktori atau file sebagai gantinya akan mengarah ke semua yang terdaftar, tanpa penyelesaian:
cd Do
.adobe/ .gimp-2.6/ Podcasts/
.aptitude/ .gnome2/ Public/
.audacity-data/ .gnome2_private/ .pulse/
............
Saya telah memotong daftar di sini, karena itu sangat panjang dan tidak perlu mereproduksi semuanya.
Sekali lagi, penyelesaian perintah masih akan berfungsi.
Jadi, hanya menghapus shopt -s failglob
atau shopt -s nullglob
juga bisa menyelesaikan masalah kesalahan dengan selesai bash, dengan asumsi bahwa Anda memiliki garis yang sesuai di Anda .bashrc
dan bash-completion
diinstal.