Завершение вкладки не работает для команд

Я пытаюсь использовать завершение табуляции для команд в Ubuntu 11.04 Beta 1, запускающих все последние обновления, но, похоже, это не работает (Хотя пакет bash-complete установлен)

Завершение с помощью вкладки работает корректно только для каталогов или файлов.

Есть идеи, где копать?

50
задан 28 June 2012 в 08:38

5 ответов

В дополнение к изменению файла /etc/bash.bashrc (помимо других ответов) вам может потребоваться установить пакет bash-completion.

Проверьте, существует ли файл /etc/bash_completion. Если нет:

sudo apt-get install bash-completion

(В моем выпуске Debian 7 он изначально не был установлен)

0
ответ дан 28 June 2012 в 08:38

Проверьте, есть ли у вас следующий фрагмент в вашем .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
0
ответ дан 28 June 2012 в 08:38

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

Даже если у Вас есть соответствующая строка в Вашем .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 установленный.

13
ответ дан 28 June 2012 в 08:38

Как бы проста это ни звучала, убедитесь, что bash - это ваша активная оболочка.

echo $SHELL

Я только что обновился до Ubuntu 14.04.1 LTS, и у меня не было автоматического завершения вкладок, даже после следования советам по этому сообщение, только чтобы понять, что моя оболочка была установлена ​​на /bin/sh, а не /bin/bash.

0
ответ дан 28 June 2012 в 08:38

Обновление к 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 +, входят"

Удар перезапуска

исполнительный удар

2
ответ дан 28 June 2012 в 08:38

Другие вопросы по тегам:

Похожие вопросы: