Автозаполнение bash не работает с подстановочными знаками

Автозаполнение bash не работает с подстановочными знаками

Используя bashэту систему:

Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u4 (29.02.2016) x86_64 GNU/Linux

Последовательность:

cd /tmp
touch test1.txt && touch test2.txt && touch test3.txt
ls test [tab][tab]

Шоу:

test1.txt test2.txt test3.txt

под командной строкой.

Именно такого bashповедения я и ожидаю от автозаполнения.

Но когда я печатаю:

ls test* [tab][tab]

(ожидая того же результата) я получаю только (т.е. автозаполнение расширяется исключительно до):

test1.txt

Так что подстановочный знак звездочки ( *) в конце делает test[23].txt'unreachable'. Я почти уверен, что эти две последовательности давали те же результаты в предыдущих версиях bash — по крайней мере, на моем компьютере.

У кого-нибудь еще есть такая проблема? Это настройка по умолчанию (например, в Debian 8), которую можно изменить? (Я пробовал устанавливать и отменять различные параметры оболочки, но shoptбезрезультатно).

решение1

Ну, решение, которое работает для меня, следующее: у ~/.bashrcменя были строки

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
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

Я думал, что это блок, который отвечает за автодополнение. Но после того, как я его закомментировал и запустил новую оболочку, он не только заработал, но и вернулся к привычному для меня режиму!

Все еще не уверен, что ifозначает это предложение, но я не буду пытаться исправить его, пока оно работает.

Связанный контент