Em zsh
, ssh e scp usam a conclusão do host de /etc/hosts
. No entanto, eles tentam corresponder nomes de host mesmo se eu usar letras maiúsculas e quando estou obviamente me referindo a um arquivo, não a um host:
$ scp -rp F<tab>
FOO.txt foo.mydomain.com
Gostaria de desativar esse recurso. Eu mudei a linha seguinte em /usr/share/zsh/functions/Completion/Unix/_ssh
compadd -M 'm:{a-zA-Z}={A-Za-z} r:|.=* r:|=*' "$@" $config_hosts
para
compadd "$@" $config_hosts
Agora, quando eu começo a digitar meu comando ssh e preencho automaticamente o nome do host usando a guia ssh foo<tab>
, recebo um erro:
_all_labels:39: command not found: -J
o que isso significa e como posso corrigi-lo?
Um segundo problema é que não consigo recompilar o arquivo de conclusão depois de fazer as alterações no Unix / _ssh:
zcompile Unix/ Unix.zwc
zcompile: can't open file: Unix.zwc
isto é o que eu recebo quando pressiono Ctrl + X + ? :
$ scp -rp TE
Trace output left in /tmp/zsh10048scp3 (up-history to view)
TESTING.txt
testing testing.mydomain.com
em que TESTING.txt é um arquivo e testing
e testing.mydomain.com
são nomes de host
UPDATE:
Percebi que recebi o erro _all_labels:39
acima apenas para hosts, que têm ProxyCommand
em ~/.ssh/config
, ou seja:
Host testing testing.mydomain.com
Hostname testing.mydomain.com
User root
PubkeyAuthentication yes
StrictHostKeyChecking yes
UserKnownHostsFile ~/.ssh/known_hosts
ProxyCommand ssh server2.mydomain.com nc %h %p