У меня есть несколько псевдонимов, которые я использовал на своей машине 12.04.
пример:
alias pssh="tsocks ssh"
alias pscp="tsocks scp"
alias prdp="tsocks xfreerdp ..........SOMETHING ...."
Эти псевдонимы являются модификациями обычных команд linux (scp, ssh и т. Д.), Поэтому я бы хотел, чтобы эти псевдонимы имели те же правила автозаполнения, что и их исходные аналоги. Я не хочу писать свои собственные правила, так как правила для обычных команд в порядке.
В 12.04 следующее прекрасно работало:
complete -F _ssh pssh
complete -F _scp pscp
complete -F _ssh prdp
Это не работает в 14.04. Если я пытаюсь выполнить автозаполнение, я получаю следующую ошибку:
bash: completion: function `_ssh' not found
Если я выполняю автозаполнение по ssh перед тем, как попробовать pssh, все работает. Насколько я знаю, это потому, что правила автозаполнения не загружаются, прежде чем они используются. Пока правила автозаполнения для ssh не будут загружены, мои правила будут недействительными и приведут к ошибке.
Как это исправить, как правильно подключить мой псевдоним к правилу автозаполнения, определенному для обычной команды linux?
Более новые выпуски завершения удара (> =2.0) улучшенный чрезвычайно время раньше загружали логику автозавершения. Они сделали их путем загрузки по запросу необходимых файлов, более новое местоположение для этих файлов:
/usr/share/bash-completion/completions /
, Если Вы используете ls-lah для исследования такого каталога, Вы найдете, чем, там существуют много гибких ссылок. Поэтому файл необходим для каждой команды/псевдонима, таким образом, если у Вас есть pssh, pscp и prdp, необходимо будет создать ссылки с теми именами:
sudo ln -s /usr/share/bash-completion/completions/ssh /usr/share/bash-completion/completions/psss
sudo ln -s /usr/share/bash-completion/completions/ssh /usr/share/bash-completion/completions/pscp
sudo ln -s /usr/share/bash-completion/completions/ssh /usr/share/bash-completion/completions/prdp
Другая альтернатива является к syslink ssh файлом автозавершения к/etc/bash_completion.d /
sudo ln -s /usr/share/bash-completion/completions/ssh /etc/bash_completion.d/ssh
, Бывший метод загрузит функцию _ssh на каждом ударе интерактивная сессия (делающий медленнее запуск).
После использования любого из вышеупомянутых методов Ваш complete -F _ssh pssh ...
конфигурация свяжет функцию _ssh с Вашими псевдонимами.