При использовании командной строки cd
является одной из наиболее часто используемых команд оболочки. Я привык к возможности набирать cd
, нажимая tab
, а затем снова нажимая tab
, чтобы увидеть, какие каталоги есть для cd
в. Ubuntu недавно начал включать пакет colord
, а его инструменты начинаются с cd
. Теперь, если я нажму cd
и вкладку
, я получу следующее:
$ cd
cd cd-fix-profile cd-it8
cd-create-profile cd-iccdump
Как я могу убедиться, что все эти cd - *
исполняемые файлы не отображаются, когда Я использую командную строку? Я предполагаю, что они необходимы ОС, поэтому я не могу просто переместить их или переименовать; однако я не хочу, чтобы они были завершены или даже видны, когда я m в bash.
Обратите внимание, что это находится под bash 4.4.20 (1), которая поставляется с Ubuntu 18.04.
В стороне: включены ли эти исполняемые файлы в Ubuntu 20.04?
Из Переменные Bash ,
EXECIGNORE
Список шаблонов оболочки, разделенных двоеточиями (см. Сопоставление с образцом ), определяющий список имена файлов, которые следует игнорировать при поиске команд с использованием PATH. Файлы, полные имена которых соответствуют одному из этих шаблонов, не считаются исполняемыми файлами для целей завершения и выполнения команд через поиск PATH.
Так что добавьте это в ~ / .bashrc
:
EXECIGNORE="*/cd-*:"
Я не есть эти команды cd - *
, но вот другой пример:
$ EXECIGNORE=
$ ex<TAB>
ex exit exo-open expiry
exec exo-csource exo-preferred-applications export
exifautotran exo-desktop-item-edit expand expr
$ xfc<TAB>
xfce4-terminal xfce4-terminal.wrapper xfconf-query
$ EXECIGNORE="*/ex?*:*/xfconf-query:"
$ ex<TAB>
ex exec exit export
$ xfc<TAB>
$ xfce4-terminal
Это иллюстрирует важный момент: встроенные команды оболочки не исключаются ( exec
, exit
и экспорт
по-прежнему предлагается в завершении), так как они не ищутся с использованием PATH.