1

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

Linux 3.16.0-4-amd64 # 1 SMP Debian 3.16.7-ckt20-1+deb8u4 (2016-02-29) 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 autocomplete будет себя вести.

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

ls test* [tab][tab]

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

test1.txt

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

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

1 ответ1

0

Ну, решение, которое работает для меня, заключается в следующем: в ~/.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 -clause, но я не буду пытаться исправить это, пока оно работает ..

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .