Я пытаюсь использовать завершение табуляции для команд в Ubuntu 11.04 Beta 1, запускающих все последние обновления, но, похоже, это не работает (Хотя пакет bash-complete установлен)
Завершение с помощью вкладки работает корректно только для каталогов или файлов.
Есть идеи, где копать?
В дополнение к изменению файла /etc/bash.bashrc
(помимо других ответов) вам может потребоваться установить пакет bash-completion
.
Проверьте, существует ли файл /etc/bash_completion
. Если нет:
sudo apt-get install bash-completion
(В моем выпуске Debian 7 он изначально не был установлен)
Проверьте, есть ли у вас следующий фрагмент в вашем .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
Я думал, что также добавлю следующее дополнительное объяснение отказа завершения удара - это слишком длинно для комментария и может быть полезно для кого-то, у кого есть проблема с завершением удара, поскольку, по-видимому, это - 'общий' канонический вопрос, в который отнесены все дубликаты.
Даже если у Вас есть соответствующая строка в Вашем .bashrc
(как в ответе выше) и bash-completion
пакет установил, завершение удара может все еще неправильно функционировать, если Вы имеете также shopt -s nullglob
или shopt -s failglob
в Вашем .bashrc
или .bash_aliases
.
Следующие сценарии были протестированы со всеми пользовательскими настройками .bashrc
и .bash_aliases
удаленный для предоставления справедливого теста, с соответствующей строкой завершения удара в .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
мог также решить проблему ошибок с завершением удара, предположив, что у Вас есть appropiate строка в Вашем .bashrc
и bash-completion
установленный.
Как бы проста это ни звучала, убедитесь, что bash - это ваша активная оболочка.
echo $SHELL
Я только что обновился до Ubuntu 14.04.1 LTS, и у меня не было автоматического завершения вкладок, даже после следования советам по этому сообщение, только чтобы понять, что моя оболочка была установлена на /bin/sh
, а не /bin/bash
.
Обновление к Ubuntu 14.04.01
Проверьте, есть ли у Вас следующий фрагмент в Вашем .bashrc (должен быть там по умолчанию),
энергия sudo/etc/bash.bashrc (вводят "меня" для редактирования файла),
# 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 +, входят"
Удар перезапуска
исполнительный удар