1

На удаленном компьютере с версией bash «3.2.51 (1)-release» (ОС: SUSE Linux Enterprise Server 11.1 (x86_64))я не смог выполнить обычное завершение табуляции с именем переменной. например, я хотел бы напечатать:

echo $OLDPWD/

затем в конце косой черты я могу нажать "Tab", и имя переменной будет расширено до старого имени каталога (перед последней командой cd или pushd ). Это работает на моем ноутбуке (Debian 7, Bash 4.2.37 (1)-релиз). Почему в этой оболочке SLES bash это не сработает?

Точно так же, если я наберу

echo $OLDP

и затем нажмите "Tab" в конце "P", bash завершит это до $OLDPWD . Этого не произойдет и в SLES 11 bash.

Какие контрольные переменные (покупал? задавать?) что влияет на это поведение?

3 ответа3

3

shopt -s direxpand заставит echo $HOME/<tab> расшириться до echo /home/matt/ в bash 4.2. В bash 4.1 это должно быть по умолчанию.

Я считаю, что bash-completion может действительно испортить ситуацию. Я всегда либо удаляю bash-completion complete или запускаю complete -r чтобы убедиться, что отдельные правила завершения не делают глупостей с завершениями по умолчанию.

Если $OLDPWD действительно установлен, то echo $OLDP<tab> должен расшириться до echo $OLDPWD . Я не знаю, что могло бы предотвратить это.

0

Попробуйте C-x $ вместо TAB чтобы явно запросить возможные переменные (а не что-то еще) дополнения.

0

Проверьте ответ для urxvt - tab раскрывают переменные окружения Дмитрия Александрова.

Msgstr "Это о параметре direxpand.

$ shopt -s direxpand и $ FOO_PATH/

будет расширяться за счет TAB "

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