Функция автозаполнения bash не работает с переменными среды в 11.04. Текущее поведение указано ниже
export SCRIPT=/home/user/script
cd $SCRIPT/<tab>
приводит к добавлению обратной косой черты ( \
) до $SCRIPT
того, как приглашение станет
cd \$SCRIPT/
То же самое происходит, если cd
заменить ls
или любой другой командой
Кроме того, если в пути к $ SCRIPT есть исполняемый файл, и я хочу запустить его
$SCRIPT/<tab>
Bash не показывает параметры внутри папки (независимо от того, есть ли один путь или несколько файлов / каталогов внутри пути, содержащегося в переменных среды).
Другими словами, автозаполнение не работает с переменными среды.
11.04
bash
environment-variables
nilchat
источник
источник
Ответы:
Эта ошибка была введена в Bash 4.2. Здесь есть длинная тема:
http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00274.html
Короче говоря, Chet Ramey, разработчик bash, пока не знает, как его исправить.
источник
Чтобы вернуть старое поведение, используйте команду
или включить его в свой
.bashrc
Если вы используете один и тот же .bashrc с разными версиями bash, используйте
источник
Обходной путь, предложенный в http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00274.html :
<Tab>
для автоматического заполнения вашей переменной окруженияcd $MYVAR
<Esc>
+,<Ctrl>-E
чтобы развернуть текущую командную строку, т.е. заменить$MYVAR
ее значением путь/
и наслаждайтесь<Tab>
автозаполнением как обычноПредполагается, что вы находитесь в режиме emacs (
set -o emacs
) иbash_completion
настроены дляcd
(например,complete -o nospace -F _cd cd
).К сожалению, это не работает в vi mode (
set -o vi
), потому что расширение командной строки недоступно.источник
После ввода переменной оболочки
введите Cntrl-Alt-E. Это расширяет переменную
Это работает с EDITOR = vi в Fedora 16.
источник