4

У меня проблема с завершением работы bash после обновления системы.

$ mkdir abcde    
$ cd abc[TAB] 

ничего не делает, в то время как в старых версиях bash он расширяется до $ cd abcde .

Некоторые старые форумы по bash предлагают установить параметр direxpand , но, похоже, в bash 4.2:

$ shopt -s direxpand  
bash: shopt: direxpand: invalid shell option name  

(Я обновился с Fedora 11 до Fedora 17 с его bash-4.2.37)

Есть ли способ обойти это?

2 ответа2

2

bash использует библиотеку readline для ввода, tab должен соответствовать операции readline complete (это отличается от одноименной команды bash, хотя и относится к операции).

Существует ряд возможных причин, которые необходимо проверить:

  • проверить, работают ли какие-либо другие дополнения: meta-? (вероятно, alt+shift+?`) здесь должны быть перечислены все совпадения (аналогично двойному нажатию клавиши Tab )
  • проверьте, работает ли вместо этого ctrl-i (альтернативный способ входа на вкладку)
  • проверьте переменную TERM и вывод stty (не должно содержать ссылки на tab)
  • проверить , что Баш завершение функции могут быть определены, запустите complete без аргументов , чтобы перечислить их
  • Ваш readline может быть перепутано, проверить / и /etc/inputrc и ваш ~/.inputrc (если таковые имеются), а выход bind -q complete Он должен содержать как минимум " \C-i ", что означает ctrl - i (вкладка)
  • проверьте, не нарушена ли последовательность клавиш readline для tab: bind -S (не должно содержать « \C-i »)
  • Если вы запустите bind '"\C-i": complete' , она начнет работать как положено?
1

Видимо shopt -s direxpand работает со всем, кроме встроенного "cd". Поэтому я просто добавил «alias xy = cd» в свой профиль, и xy работает так же, как cd, но direxpand работает с использованием TAB. (Кто бы мог подумать, что это будет так просто?)

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