Расширение Bash-переменных на вкладке завершено - PullRequest
26 голосов
/ 21 июня 2011

Я использую Ubuntu 11.04 и вижу странное поведение, когда пытаюсь использовать завершение табуляции в bash для пути, начинающегося с переменной.Если у меня есть TOP = / scratch, и я пытаюсь завершить табуляцию:

cd $ TOP / foo

, он изменится на:

cd \ $ TOP /foo

Я бы предпочел, чтобы он завершился: cd $ TOP / foobar или cd / scratch / foobar, но я согласился бы на это, просто не меняя строку и требуя от меня убежать от $.

Кто-нибудь знает, где в bash / readline мне стоит поискать, чтобы это исправить?

Ответы [ 3 ]

26 голосов
/ 21 июня 2011

Нашли отчет об ошибке, пожалуйста, зарегистрируйтесь (если еще не зарегистрированы) и добавьте себя в список "Затронутые люди", я только что сделал:

https://bugs.launchpad.net/ubuntu/+source/bash/+bug/778627

Временные решения

Попробуйте включить direxpand или cdable_vars:

shopt -s direxpand
# or
shopt -s cdable_vars

Видимо Esc Вкладка может быть временным решением :

Я не нашел правильного решения, но есть обходной путь.Экранирование переменных окружения может быть отключено нажатием клавиши Esc и табуляции.

# cd $SO + [Esc] + [Tab]
# cd $SOME_DIR

Подтвердите это как ошибку!Я только что подтвердил, что та же самая вещь работает на

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 10.10
Release:        10.10
Codename:       maverick

Я получаю неправильное поведение (обновленное) natty:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 11.04
Release:    11.04
Codename:   natty

Хотя я должен добавить, что я делаю не косая черта вышла, но путь (пока действительный, существующий, доступный и читаемый) не расширяется.

Информация: https://help.ubuntu.com/community/ReportingBugs

8 голосов
/ 05 сентября 2013

Отчет об ошибке, на который ссылаются в других ответах на bugs.launchpad.net , дает новый обходной путь, выполнив команду:

shopt -s direxpand

Это работает для меня.

0 голосов
/ 18 мая 2015

У меня была похожая проблема в cygwin (NT-6.1 2.0.1 2015-04-30) bash (GNU 4.3.33), особенно когда я пытался развернуть путь путем табуляции.

Я положил shopt -s direxpand в мой ~ / .bashrc. Проблема решена.

...