У меня есть это в командной строке:
ln -sf $PWD/wine-
и затем я нажимаю, Tabчтобы завершить имя файла. В более ранних версиях Ubuntu это работало просто отлично, чтобы завершить wine-
имя файла (и как побочный эффект $PWD
был бы расширен в то время). Но теперь это превращается в
ln -sf \$PWD/wine-
это совсем не то, что я имел в виду и ничего не завершает, так как файл буквально не начинается с $
.
Как мне вернуться к менее нарушенному поведению?
set
говорит мне, что это мои текущие настройки:
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
command-line
bash
keturn
источник
источник
Ответы:
Я обнаружил, что версии bash> = 4.2.29 имеют новую
direxpand
настройку shopt. (Смотрите,man docs/bash.1
если вы посмотрите новый bash, или посмотрите bash.1 из строки 8951 )Если кто-то использует Quantal Quetzal 12.10 или иным образом получает (или проверяет и создает) новый bash, то:
Дает мне поведение, которое я хочу, нуждаюсь и люблю.
Решение: В то же время, Ctrl+ Alt+ Eвместо того , Tabделает то , что я хочу тоже. Но это неловко.
Кстати, Есть несколько потоков, которые называются "вопрос расширения переменной bash tab?" в gnu.bash.bug . Прочитав их, я нашел информацию здесь.
источник
4.4.19
в Ubuntu 18.04, и он просто работает. Не уверен, когда это изменилось.shopt -u progcomp
решает проблему, не расширяя переменную до ее значенияпоиск
_filedir()
в скрипте bash_completion верхнего уровня и изменение строкив
источник
compopt: noquote: invalid option name
Для тех (как я) с 12.04 можно использовать ~ + вместо $ PWD ...
например :
источник
Даже с обновленным bash я обнаружил, что
$
все равно сбежал.bash-completion (1:2.1-3.fc20)
пакета/etc/bashrc
из источников,~/.bashrc
казалось, это исправить.Я подозреваю, что теперь мне не хватает некоторых функций, к которым я обычно привык, но еще не заметил.
Альтернатива (по крайней мере для Fedora 26), добавьте
export BASH_COMPLETION_VERSINFO=0
перед поиском/etc/bashrc
. Это заставляет проблемный сценарий думать, что он уже получен.источник
Это исправило это для меня, оно также удалило много «интеллектуальных» вариантов завершения, которые, как я обнаружил, мешают не завершать файлы, которые, как я знаю, существуют, потому что глупая вещь думает, что я не хочу, чтобы они были аргументами для конкретного команда. ARRRGH
источник
Я столкнулся с той же проблемой с Bash в Cygwin. Я исправил свою проблему, установив следующую опцию.
http://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
источник
Отключение опции оболочки 'complete_fullquote' делает работу:
источник