Программируемое завершение Bash работает путем анализа командной строки и выяснения того, что завершается:
- Некоторые контексты обрабатываются особым образом, например, первое слово в команде завершается как имя команды, последующее a
$завершается как имя переменной и т. Д.
- Вне этих контекстов bash пытается завершить аргумент команды, и применяются параметры команды или сбой (что обычно имеет место) для базового имени команды.
Например, после , bash завершает имена команд, начинающиеся с . После bash завершает имена переменных, которые начинаются с . После bash применяет правила завершения для команды . Правила завершения могут указывать категорию (пользователь, переменную, файлы и т. Д.), Шаблон подстановочного знака для имен файлов или функцию или фрагмент кода для выполнения.sqllTabsqllsqlldr $aTabasqlldr Tabsqlldr
Правила завершения определяются completeвстроенным. Bash не отслеживает, когда completeбыл вызван встроенный модуль или в каком скрипте (если он есть) он был. В большинстве дистрибутивов поставляется пакет завершения bash , который предоставляет ряд правил для общих команд. Это принимает форму ряда файлов сценариев, которые содержат вызовы complete, со сценарием, который должен быть прочитан .bashrc(или /etc/bash.bashrcреализован) для загрузки всех этих сценариев: обычно . /etc/bash_completionтребуется для активации программируемого завершения и загрузки доступных сценариев.
Стандартный пакет не включает поддержку sqlldr. Если у вас есть такая поддержка, она должна исходить из другого источника. Этот источник , возможно, уронил файл в каталоге , как /etc/bash_completion.dи мог бы прийти с инструкциями , чтобы включить некоторый код в вашем .bashrc. Вы можете использовать, complete -p sqlldrчтобы увидеть текущие правила для sqlldr; как упоминалось ранее, это не скажет вам, откуда были загружены эти правила.
Tcsh, zsh и fish имеют несколько схожих механизмов (все черпали вдохновение в tcsh), но имеют различные встроенные функции, синтаксис и возможности.
/etc/bash_completion.d. Посмотрите также/etc/bash_completionи посмотритеset, насколько выросла ваша среда.