Bash perilaku autocomplete di Debian 8

0

Pada instalasi baru Debian 8 (Jessie) saya telah menemukan bahwa pelengkapan otomatis di bash, menggunakan tab kunci, telah berubah.

Tes yang saya lakukan adalah:

  1. Buka terminal (dalam kasus saya Konsole ). Di atas prompt itu ditampilkan
    ~ ~
    ~ ~ ~
    ~ ~ ~ ~
    ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  2. mkdir -p /tmp/test # buat direktori tes
  3. cd /tmp/test # masuk ke direktori kosong
  4. ls <tab> <tab> <tab> <tab>
    /tmp/test /tmp/test ~ ~ ~ ~ ~ ~ ~ ~ ~ # setelah 1 tab
    /tmp/test /tmp/test /tmp/test ~ ~ ~ ~ ~ ~ ~ ~ ~ # setelah 2 tab s
    /tmp/test /tmp/test /tmp/test /tmp/test ~ ~ ~ ~ ~ ~ ~ ~ ~ # setelah 3 tab s
    /tmp/test /tmp/test /tmp/test /tmp/test /tmp/test ~ ~ ~ ~ ~ ~ ~ ~ ~ # setelah 4 tab s

Dulu hanya menampilkan file dalam direktori (jika ada). Apakah ada yang tahu penyababnya? Sesuatu masuk .bashrc? Senang mengirim lebih banyak file jika itu membantu!

alle_meije
sumber
Pertanyaan yang jelas, tetapi apakah Anda memiliki bash-completion paket? Mari kita hasilkan dpkg -l | grep bash.
Faheem Mitha
ii bash 4.3-11+b1 amd64 GNU Bourne Again SHell dan ii bash-completion 1:2.1-4 all programmable completion for the bash shell
alle_meije
Aneh. Jalankan Jessie di sini, dan itu menghasilkan daftar file seperti yang diharapkan.
Faheem Mitha
itu juga aneh bahwa untuk program di jalur itu berfungsi seperti yang diharapkan. Jadi 'pdf' tab (2x) memberikan daftar sekitar 40 alat pdf, dan 'pdfl' tab memberikan 'pdflatex'. Pasti ada sesuatu di .bashrc atau .profile yang salah, saya tidak bisa menemukan apa.
alle_meije
1
Periksa lokal Anda .bashrc dan juga /etc/bash.bashrc dan /etc/profile untuk melihat apakah ada sesuatu yang kacau di salah satu dari mereka. Saya tidak punya .profile. Saya tidak berpikir itu standar, setidaknya di Debian. Mungkin juga layak melihat output dari set untuk melihat apakah ada sesuatu di sana, meskipun itu biasanya banyak hal.
Faheem Mitha

Jawaban:

1

Menemukan jawaban untuk teka-teki ini dalam 2 langkah. Pertama, saya yang dulu .bash_aliases bekas alias [='pushd .' dan alias ]='popd'. Menghapus garis-garis itu menyelesaikan perilaku aneh di atas, tetapi aku kehilangan alias.

Tetapi jika saya menyimpan alias itu dan meletakkan garis

if [[ -f ~/.bash_aliases ]]; then
   . ~/.bash_aliases
fi

di .bashrc setelah garis

if ! shopt -oq posix; then
   if [[ -f /usr/share/bash-completion/bash_completion ]]; then
      . /usr/share/bash-completion/bash_completion
   elif [[ -f /etc/bash_completion ]]; then
      . /etc/bash_completion
   fi
fi

maka saya bisa menyimpan keduanya [ dan ] alias dan memiliki pelengkapan otomatis normal. Jadi tampaknya alias mengganggu set-up penyelesaian otomatis Jessie di Bash. Satu-satunya alasan panggilan itu .bash_aliases sebelum panggilan skrip pelengkapan otomatis awalnya, adalah bahwa dalam template .bashrc disertakan dengan instalasi mereka dalam urutan itu.

alle_meije
sumber
hanya mungkin 24 jam kemudian :)
alle_meije