Завершение вкладки не работает для команд
Я пытаюсь использовать завершение табуляции для команд в Ubuntu 11.04 Beta 1, где запущены все последние обновления, но, похоже, это не работает. (Хотя пакет bash-complete установлен)
Заполнение вкладок работает корректно только для каталогов или файлов.
Есть идеи куда копать?
5 ответов
Проверьте, есть ли у вас следующий фрагмент в вашем.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 [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
В дополнение к модификации /etc/bash.bashrc файл (см. другие ответы) вам может потребоваться установить bash-completion пакет.
Проверить, если /etc/bash_completion выход из файла. Если нет:
sudo apt-get install bash-completion
(В моем дистрибутиве Debian 7 он изначально не был установлен)
Я подумал, что я также добавлю следующее дополнительное объяснение неудачи завершения bash - это слишком долго для комментария и может быть полезно для кого-то, у кого есть проблема с завершением bash, поскольку, по-видимому, это "общий" канонический вопрос, к которому все дубликаты передаются.
Даже если у вас есть соответствующая строка в вашем .bashrc (как в ответе выше) и bash-completion пакет установлен, завершение bash может по-прежнему работать со сбоями, если у вас shopt -s nullglob или же shopt -s failglob в вашем .bashrc или же .bash_aliases,
Следующие сценарии были протестированы со всеми пользовательскими настройками .bashrc а также .bash_aliases удален, чтобы дать честный тест, с соответствующей строкой завершения bash в .bashrc настоящее и с bash-completion установлены.
1) Первый сценарий, когда у вас есть shopt -s failglob в вашем .bashrc или же .bash_aliases,
При попытке добавить полные каталоги и файлы соответственно, эти ошибки произойдут:
cd Dbash: no match: "${COMP_WORDS[@]}"
cat pabash: no match: words[0]=${!ref}${COMP_WORDS[i]}
Тем не менее, команды все равно будут успешно выполнены.
2) с shopt -s nullglob включен, попытка завершить каталог, или файл вместо этого приведет к тому, что все будет в списке, без завершения:
cd Do
.adobe/ .gimp-2.6/ Podcasts/
.aptitude/ .gnome2/ Public/
.audacity-data/ .gnome2_private/ .pulse/
............
Я сократил список здесь, так как он был очень длинным и не нужно воспроизводить все это.
Опять же, завершение команды все равно будет работать.
Итак, просто удалив shopt -s failglob или же shopt -s nullglob также может решить проблему с ошибками при завершении bash, при условии, что у вас есть подходящая строка в вашем .bashrc а также bash-completion установлены.
Как бы простой это не звучало, убедитесь, что bash является вашей активной оболочкой.
echo $SHELL
Я только что обновился до Ubuntu 14.04.1 LTS и у меня не было автозаполнения вкладок, даже после того, как я следовал совету в этом посте, только чтобы понять, что моя оболочка установлена /bin/sh и не /bin/bash,
Обновление до Ubuntu 14.04.01
Проверьте, есть ли у вас следующий фрагмент в вашем.bashrc (должен быть там по умолчанию)
sudo vim /etc/bash.bashrc (введите "i" для редактирования файла)
# enable bash completion in interactive shells
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
Раскомментируйте 7 строк выше
Сохранить файл "esc + w + q + enter"
Перезапустите Bash
Exec Bash