Синтаксическая ошибка броска завершения Bash

  • X11 - протокол работы с окнами (сеть, прозрачная между прочим) и ее реализация (X-сервер и низкоуровневые библиотеки для доступа к нему). Дескрипторы "только" основной вход (клавиатура, мышь...) и вывод (тянущий прямоугольники), но делает это довольно абстрактным способом, так, чтобы можно было запустить программу на одной машине и управлять ею от другого, подписаться на различные события и т.д. Существует на самом деле только одна применимая реализация с открытым исходным кодом, а именно, Основой X.org.

  • QT, GTK, Мотив... - первоначально библиотеки виджета, которые обеспечивают высокоуровневую абстракцию выше библиотек X11 (например, диалоговые окна создания, кнопки и другие графические элементы). Однако, например, QT идет путем кроме того и имеет интерфейсы для большого количества других вещей также (базы данных, мультимедиа...). Это также допускает объединенный дизайн UI. Подобный тому, что Swing находится в Java.

  • lxdm, lightdm, gdm, kdm, xdm...-менеджеры по оформлению: специализированные программы, которые отображают экран входа в систему (некоторые могут сделать это по сети также) и позволяют пользователю войти в систему в его предпочтительную сессию настольной среды.

  • compiz, kwin, метагород, xfwm, openbox... - менеджеры окон: программы, предоставляющие основную функциональность оконной среды как рисование художественных оформлений к висячим строкам (текст заголовка и кнопки), изменение размеров, движущиеся окна, перемещение их в стопке окна (повышение/понижение или мозаичное размещение их на экране). Они иногда также обрабатывают "рабочий стол" (фон и значки, помещенные в него) также.

  • KDE, Gnome, XFCE, LXDE... - настольные среды: более или менее полные наборы инструментов. Они обычно включают менеджер окон, менеджера по оформлению, своего рода "панель" (вещь, где значки, список в настоящее время открываемых окон, часов и другого материала отображены), файловый менеджер, мультимедийное средство просмотра, редактор и "положительные герои" как календарь/напоминание и различные настольные расширения),

  • Можно (до некоторой степени) смешать приложения от другого DES (менеджеры по оформлению хорошо работают, так как они довольно автономны однако, особенно kdm и gdm, который они вытягивают в большом количестве зависимостей что их дубликаты более легкого веса). Основная проблема смешать приложения состоит в том, что их настройки часто переплетаются с DE и таким образом могут потребовать, чтобы некоторые сервисы работали (которые не находятся под другим DE). Стиль мог бы также отличаться, когда другой инструментарий (например, QT по сравнению с GTK) используется. И это - дублирование - несколько приложений, служащих той же цели, имеют свое отдельное и в некотором смысле избыточные опции.

4
15.01.2014, 20:48
2 ответа

Завершение Bash является модульным; различные пакеты обеспечивают свои собственные расширения завершения. Другой пакет, вероятно, содержит ошибку. Попробовать mv /etc/bash_completion.d{,.old} и посмотрите, фиксирует ли это его. Если так, сделайте mv /etc/bash_completion.d{.old,} положить обратно его снова и затем переместить отдельные файлы из /etc/bash_completion.d каталог один за другим для идентификации файла, который вызывает проблему. (Каталог можно было бы назвать чем-то немного отличающимся на Мяте.)

1
27.01.2020, 21:00
  • 1
    Спасибо. Я попробовал это, но никакую радость. Существует названный каталог /etc/bash_completion.d в моем экземпляре Мяты и я смог переименовать/переместить, как Вы предположили, но проблема остается, как описано. –  guypursey 27.10.2013, 18:59
  • 2
    Возможно, необходимо ли перезапустить удар, прежде чем он заметит то изменение? Попытайтесь открыть новый терминал. –  Robin Green 27.10.2013, 19:03
  • 3
    Спасибо за дальнейшую подсказку. Все еще никакая удача, к сожалению. –  guypursey 27.10.2013, 19:09

Еще не может официально прокомментировать, таким образом, я предложу частичный ответ, указывающий в другое направление. Вы могли проверить свои привязки клавиш?

$ bind -p | grep -i tab

Я столкнулся со средами в прошлом, где люди решили связать клавишу Tab с функциональностью. Другая опция состоит в том, чтобы разветвиться от оболочки удара с помощью "-x" параметра, как так:

$ bash -x

Повторите свой тест. Это происходит также, если Вы используете echo вместо cd?

$ echo b <tab>
1
27.01.2020, 21:00
  • 1
    Спасибо за это. Отвечать на Ваш последний вопрос сначала, echo не производил тот же эффект. Первая команда, которую Вы дали, возвратилась # tab-insert (not bound). Разветвление оболочки удара было интересно (никогда не делавшийся что прежде). Я повторил тест после ветвления и получил длинный список строк в ответ и в особенности заметил этот комментарий: # TODO: I have removed a "[ -n $tmp ] &&" before 'printf ..', # and everything works again. If this bug suddenly # appears again (i.e. "cd /b<TAB>" becomes "cd /"), # remember to check for other similar conditionals (here # and _filedir_xspec()). --David –  guypursey 07.11.2013, 21:23
  • 2
    я предполагаю это, имеет некоторое отношение к завершению удара; мой подход должен был бы проверить Ваше определенное использование завершений complete -p и удалите преступника, использующего complete -r <culprit>. Другая опция состоит в том, чтобы отключить его полностью в рабочем использовании оболочки shopt -u progcomp. Поскольку Вы упомянули выполнение дистрибутива Linux который, кажется, основан на Ubuntu 13.04, я предполагаю, что другие люди споткнутся через этот тип ошибки, и это должно быть зафиксировано в мгновение ока. Другая опция состояла бы в том, чтобы переустановить завершение удара: blog.onetechnical.com/2012/06/19 / … –  Moreaki 07.11.2013, 22:43

Теги

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