Почему Bash не может игнорировать случай, когда имена переменных завершения табуляции?
Когда я хочу ввести команду echo $bash_
затем нажимаю Tab
ключ, автозаполнение не может произойти.
Но когда я ввожу команду echo $BASH_
затем нажимаю Tab
, список завершения будет выводиться так:
$BASH_ALIASES $BASH_COMMAND $BASH_SOURCE
$BASH_ARGC $BASH_COMPLETION_COMPAT_DIR $BASH_SUBSHELL
$BASH_ARGV $BASH_LINENO $BASH_VERSINFO
$BASH_CMDS $BASH_REMATCH $BASH_VERSION
И мой .inputrc
файл содержит readline
опция игнорирования, set completion-ignore-case on
, и завершение имени файла нечувствительно к регистру в порядке.
Итак, я хочу variable name
Завершение табуляции может игнорировать регистр переменной.
1 ответ
Существуют файловые системы без учета регистра, и в таких системах имеет смысл, чтобы при добавлении имени файла не учитывался регистр. В идеальном случае bash может определить, является ли компонент пути к файлу нечувствительным к регистру, но на практике нет стандартного интерфейса, предоставляющего эту информацию, поэтому bash отступает от возможности явно настроить регистрозависимое завершение имени файла без учета регистра: (цитата из bash ручной, акцент добавлен)
completion-ignore-case
Если установленоon
readline выполняет сопоставление и завершение имени файла без учета регистра. Значением по умолчанию является "off".
Аналогично, вы можете настроить расширение глобуса и / или шаблоны регистров так, чтобы они не учитывали регистр.
Но вы не можете сделать переменные bash нечувствительными к регистру. $bash
а также $BASH
разные переменные. Аналогично с именами функций bash, встроенными именами bash и ключевыми словами bash. Bash может выполнить завершение табуляции со всеми из них, но независимо от конфигурации чувствительности к регистру имен файлов, завершение табуляции чувствительно к регистру.
Хотя это кажется разумным оправданием, выясняется, что завершение табуляции bash всегда чувствительно к регистру, за исключением имен файлов (включая каталоги и команды bash, которые отображаются на имена файлов), которые можно настроить без учета регистра. Даже вещи, которые обычно нечувствительны к регистру, такие как имена сигналов и имена хостов, могут быть выполнены только с учетом регистра.