$ bash --version
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
Обычно я использую указанную выше версию bash на машине Ubuntu 16.04 через терминал MATE. Однако в настоящее время я использую Terminal.app macOS 10.14.6 для SSH-входа на эту машину. .bash_profile
Для моего пользователя просто source
s .bashrc
, поэтому не должно быть никаких различий в конфигурации, кроме эмуляторов терминала.
У меня есть переменные окружения, которые я использую для сокращения часто используемых, но длинных путей к каталогам, определенные в моем .bashrc, что-то вроде:
export FOO=~/foo/bar/baz
export BAR=~/foo/bar/baz/qux/foobar
У меня есть привычка использовать автодополнение (я имею в виду ввод части имени и нажатие клавиши Tab) для подкаталогов этих переменных, поэтому я могу ввести:
cd $FOO/mi<TAB>
и получить:
cd $FOO/misc/
Это поведение в терминале MATE, к которому я привык и которое мне нравится. Но использование Terminal.app для SSH на той же машине раздражающе расширяет переменную:
cd /home/andrea/foo/bar/baz/misc/
Я не знаю, почему это происходит, но подозреваю, что Terminal.app отправляет другую escape-последовательность. Если я ввожу <ESC><TAB>
Terminal.app вместо <TAB>
, я получаю знакомое и желаемое поведение (без расширения переменной окружения). К сожалению, это не похоже на escape-последовательность Terminal.appдля ТАБнастраивается.
Итак, я хочу узнать, могу ли я заставить bash всегда использовать желаемое мной поведение.
В ответах наbash: имя переменной не раскрывается при автодополнении Tab(где у кого-то естьпротивоположныйпроблема для меня, они хотят иметь такое поведение, которое янехочу), я видел shopt -s direxpand
. Поэтому я попробовал его обратное, shopt -u direxpand
, и это не помогло. Вhttps://stackoverflow.com/questions/6418493/bash-variable-expansion-on-tab-completeЯ тоже видел shopt -s cdable_vars
, но тоже shopt -u cdable_vars
не помогло.
Я в недоумении. :(