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

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

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

Любые идеи, которые нужно копать?

1
задан 28 June 2012 в 09:38

9 ответов

Я думал, что я также добавлю следующее дополнительное объяснение неудачи завершения 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 , пытаясь вставить вкладку plete каталог или файл вместо этого приведет ко всему, что указано, без завершения:

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.

11
ответ дан 25 May 2018 в 22:16
  • 1
    Хорошее объяснение, оно решило мою проблему, когда я пытаюсь завершить вкладку и возникла ошибка & gt; & gt; & gt; & gt; Слова [0] = $ {! исй} $ {COMP_WORDS [я]} – bagustris 2 June 2015 в 03:55
  • 2
    Хотя это работает как обходной путь, это плохо для любого программиста по завершению, на который можно положиться. Поскольку nullglob (который номинально лучше для многих) и kin может быть установлен, любой полный код, который требует старой семантики (подстановочные знаки без совпадений, приводят к самому шаблону), должен сохранить текущую настройку шара, установить тот, который им нужен, и восстановить после этого, как правило, используется IFS. – Alex North-Keys 5 August 2015 в 17:57

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

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

sudo apt-get install bash-completion

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

8
ответ дан 25 May 2018 в 22:16

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

echo $SHELL

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

6
ответ дан 25 May 2018 в 22:16

Обновление до 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

Uncomment 7 строк выше

Сохранить файл «esc + w + q + enter»

Перезапустить bash

exec bash

1
ответ дан 25 May 2018 в 22:16
  • 1
    Что это будет делать? Разве это не так по умолчанию? – Tim 3 September 2014 в 01:55
  • 2
    Как и @Tim, эта конфигурация предоставляется по умолчанию. – ssoto 17 November 2014 в 15:25
  • 3
    Это сработало для меня – Thamaraiselvam 15 June 2016 в 08:05
  • 4
    Этот ответ работал как шарм, и он имеет отрицательные голоса ??? – greuze 18 April 2017 в 13:03

Я думал, что я также добавлю следующее дополнительное объяснение неудачи завершения 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 , пытаясь вставить вкладку plete каталог или файл вместо этого приведет ко всему, что указано, без завершения:

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.

11
ответ дан 25 May 2018 в 22:16

Я думал, что я также добавлю следующее дополнительное объяснение неудачи завершения 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 , пытаясь вставить вкладку plete каталог или файл вместо этого приведет ко всему, что указано, без завершения:

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.

11
ответ дан 25 May 2018 в 22:16

Я думал, что я также добавлю следующее дополнительное объяснение неудачи завершения 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 , пытаясь вставить вкладку plete каталог или файл вместо этого приведет ко всему, что указано, без завершения:

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.

11
ответ дан 25 May 2018 в 22:16

Я думал, что я также добавлю следующее дополнительное объяснение неудачи завершения 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 , пытаясь вставить вкладку plete каталог или файл вместо этого приведет ко всему, что указано, без завершения:

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.

11
ответ дан 25 May 2018 в 22:16

Я думал, что я также добавлю следующее дополнительное объяснение неудачи завершения 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 , пытаясь вставить вкладку plete каталог или файл вместо этого приведет ко всему, что указано, без завершения:

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.

11
ответ дан 25 May 2018 в 22:16

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

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