На віддаленому комп'ютері з версією 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 вона не працюватиме?
Так само, якщо я набираю
echo $OLDP
а потім натисніть "Tab" в кінці "P" там, баш завершив би це $OLDPWD
. Це не відбудеться і в SLES 11 bash.
Які контрольні змінні (shopt? Set?), Які впливають на таку поведінку?
bash-completion
пакет на віддаленій машині?
bash-completion
Пакет пропонує набір обгортків навколо багатьох команд, які налаштовують поведінку завершення аргументів для цих команд. Це не впливає на заповнення змінних середовища. Ця можливість вбудована в більш пізні версії bash.
cd
принаймні один раз. Я не знаю, чи встановив bash 3.x $ OLDPWD, коли ви зробили CD. Чи завершується, скажімо, $ HOM <tab> до $ HOME?
set zzz='~/some/dir'
, я не можу робити розширення вкладок для, cp $zzz +tab
але якщо я визначу за set zzz=~/some/dir
, я можу зробити розширення. Схоже, оболонка не може розширюватися після рядка в лапках.