В новой установке Debian 8 (Jessie) я обнаружил, что автозаполнение в bash с использованием клавиши tab изменилось.

Тест, который я сделал, был:

  1. Откройте терминал (в моем случае Konsole). Над подсказкой это показывает
    ~ ~
    ~ ~ ~
    ~ ~ ~ ~
    ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  2. mkdir -p /tmp/test # создать тестовый каталог
  3. cd /tmp/test # перейдите в пустой каталог
  4. ls <tab> <tab> <tab> <tab>
    /tmp/test /tmp/test ~ ~ ~ ~ ~ ~ ~ ~ ~ # после 1 tab
    /tmp/test /tmp/test /tmp/test ~ ~ ~ ~ ~ ~ ~ ~ ~ # после 2 tab
    /tmp/test /tmp/test /tmp/test /tmp/test ~ ~ ~ ~ ~ ~ ~ ~ ~ # через 3 tab
    /tmp/test /tmp/test /tmp/test /tmp/test /tmp/test ~ ~ ~ ~ ~ ~ ~ ~ ~ # после 4 tab

Раньше просто показывал файлы в каталоге (если есть). Кто-нибудь знает, что вызывает это? Что-то в .bashrc? Рад отправить больше файлов, если это поможет!

1 ответ1

1

Нашел ответ на эту загадку в 2 этапа. Во-первых, мой старый .bash_aliases использовал alias [='pushd .' и alias ]='popd' . Удаление этих строк решило странное поведение выше, но я потерял свои псевдонимы.

Но если я буду держать эти псевдонимы и поставить строку

if [[ -f ~/.bash_aliases ]]; then
   . ~/.bash_aliases
fi

в .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

тогда я могу сохранить свои [ и ] псевдонимы и иметь нормальное автозаполнение. Похоже, псевдонимы мешают настройке автозаполнения Джесси в Bash. Единственная причина, по которой вызов .bash_aliases был до вызова сценариев автозаполнения изначально, заключалась в том, что в шаблоне .bashrc поставляемом вместе с установкой, они были в таком порядке.

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