Автозаполнение Bash для переменных среды [закрыто]

Функция автозаполнения bash, похоже, не работает с переменными среды в 11.04. Текущее поведение указано ниже

export SCRIPT=/home/user/script
cd $SCRIPT/<tab>

приводит к добавлению обратной косой черты ( \ ) перед $ SCRIPT , т.е. подсказка становится

cd \$SCRIPT/

То же самое происходит, если cd заменяется на ls или любую другую команду

Кроме того, если в пути, содержащемся в $ SCRIPT, есть исполняемый файл, и я хочу запустить этот

$SCRIPT/<tab>

Bash не показать параметры внутри папки (независимо от того, есть ли один файл или несколько файлов / каталогов внутри пути, содержащегося в переменных среды).

Другими словами, автозаполнение не работает с переменными среды.

25
задан 26 October 2018 в 13:25

4 ответа

Для возвращения старого behaivior используйте команду

shopt -s direxpand

или включайте его в Ваш .bashrc

При использовании того же .bashrc с различными версиями удара использовать

if ((BASH_VERSINFO[0] >= 4)) && ((BASH_VERSINFO[1] >= 2))
    then shopt -s direxpand
fi
11
ответ дан 26 October 2018 в 13:25

После ввода переменной оболочки

cd $SCRIPT/

введите Ctrl-Alt-E. Это расширяет переменную

cd /home/user/script/

Это работает с EDITOR = vi в Fedora 16.

0
ответ дан 26 October 2018 в 13:25

Обходной путь, предложенный в http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00274.html :

  1. use <Tab> для автоматического заполнения переменной окружения st Ваша командная строка говорит cd $MYVAR
  2. , нажмите <Esc> + <Ctrl>-E, чтобы расширить текущую командную строку, т.е. заменить $MYVAR ее значением, путь
  3. добавить / и затем наслаждайтесь автоматическим завершением <Tab> как обычно

Это предполагает, что вы находитесь в режиме emacs (set -o emacs) и настроили bash_completion для cd (например, complete -o nospace -F _cd cd).

К сожалению, это не работает в режиме vi (set -o vi), потому что расширение командной строки тогда недоступно.

0
ответ дан 26 October 2018 в 13:25

Эта ошибка была представлена в ударе 4.2. Существует долгий поток об этом здесь:

http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00274.html

Короче говоря, Chet Ramey, разработчик удара, не уверен, как пойти о фиксации его все же.

13
ответ дан 26 October 2018 в 13:25

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

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