Синтаксис работает отлично, поэтому, скорее всего, по той или иной причине он не будет добавлен в вашу среду bash.
Посмотрите, загружен ли он в вашей среде:
Откройте новое окно терминала bash и запустите:
declare -F | grep no_backups_complete
Чтобы увидеть объявление функции (если оно доступно):
type no_backups_complete
Если вы получите результат для первой команды, например:
declare -f no_backups_complete
это указывает, что это загружено в окружающую среду; если нет результата, это не так. Ответ типа должен быть «... не найден», если он недоступен, или перечислить определение функции, если он доступен.
Продолжая с предположением, что он не загружен в вашей среде bash:
Где вы положили файл?
Обычное местоположение находится в каталоге /etc/bash_completion.d/. Его не нужно отмечать исполняемым, чтобы поместить в этот каталог, или иметь какое-то конкретное имя. У вас правильный формат.
В качестве теста просто введите, source /path/to/your/completion.file
а затем посмотрите, игнорирует ли vim файлы, оканчивающиеся на тильды. Это должно - это было сделано в моей оболочке bash.
Убедитесь, что вы:
1. скопировали содержимое из скрипта в ваш файл .bashrc, или
2. скопировали его в /etc/bash_completion.d/ или
3. получили файл завершения из .bashrc
Какой бы метод вы ни использовали, если вы не получите исходный файл, вам нужно будет перезапустить терминал, чтобы он включился. Если он находится в каталоге /etc/bash_completion.d, то bash не загрузил его; Мне пришлось закрыть окно терминала и открыть его снова - это может быть связано с конкретной программой терминала, но для этого случая было недостаточно источника .bashrc (вариант 2). Две другие опции начнут работать после того, как будет получен .bashrc.
Если он загружен в вашей среде; то есть declare -F | grep ..
и type ..
команды возвращают ожидаемые значения, отправлять обратно с результатами. Я думаю, что это гораздо менее вероятно, и стоит пройти эти быстрые проверки, прежде чем идти по этому пути.