Первая проблема заключается в том, что имя двоичного файла openvpn
совпадает с записью в каталоге init.d.
complete | grep -i openvpn
дает
complete -F _service /etc/init.d/openvpn
В Ubuntu и ее производных это происходит из кода в/usr/share/bash-completion/bash_completion
(части bash-completion
пакета ).
for svcdir in ${sysvdirs[@]}; do
for svc in $svcdir/!($_backup_glob); do
[[ -x $svc ]] && complete -F _service $svc
done
done
Закомментируйте этот блок. Перезапустите ваш экземпляр bash. Попробуйте выполнить автозаполнение openvpn
с помощью TAB и выполните
complete | grep -i openvpn
Это производит
complete -F _openvpn /etc/init.d/openvpn
Вторая проблема исходит из /usr/share/bash-completion/completions/openvpn
. Он пытается автоматически заполнять файлы.conf из /etc/openvpn и является препятствием, если вы попытаетесь запустить openvpn с каким-либо специальным файлом конфигурации -hoc, лежащим за пределами /etc/openvpn.
Просто удалите его и перезапустите экземпляр bash.
sudo rm /usr/share/bash-completion/completions/openvpn
Теперь вы должны получить стандартное завершение файла для команды openvpn с помощью клавиши TAB.
Если вы запустите
complete -p | grep openvpn
после того, как вы попытались выполнить автозаполнение после openvpn, теперь вы должны получить
complete -F _minimal openvpn`
Лучшим подходом было бы исправление/расширение -сценариев завершения bash для openvpn. Но это история для другого дня.
Если позже вы захотите вернуться к первоначальному состоянию пакета bash-completion
, просто переустановите его с помощью следующей команды.
apt-get install --reinstall bash-completion