zsh completion: faz o sshrc se comportar como o ssh

1

Estou usando o pacote sshrc e seu comando epônimo para fazer com que o shell da máquina remota forneça o conteúdo do arquivo .sshrc local no login do SSH. No entanto, gosto muito do preenchimento automático do host do zsh (com base nos arquivos ~/.ssh/{config,authorized_keys} e /etc/hosts ).

Aliasing ssh para sshrc não vai enganar zsh (parece que resolve o alias antes de carregar as configurações de conclusão). Eu tenho tentado mexer com o conf do zsh, por exemplo copiando /usr/share/zsh/5.3.1/functions/_ssh para _sshrc , editando o dito arquivo e renomeando sua função _ssh () ... sem sorte.

Gostaria de receber alguns apontamentos, já que tenho alguns milhares de hosts no meu arquivo de configuração ssh.

    
por orgasmix 12.12.2017 / 17:27

1 resposta

2

Isso funciona para mim usando zsh 5.4.2

$ PS1='%% ' zsh -f
% rm ~/.zcompdump
% autoload -U compinit && compinit
% compdef sshrc=ssh
% sshrc ...

sob a configuração mínima de zsh -f . Isso pode ser frustrado pela sua configuração do shell; Nesse caso, você precisará dividir sua configuração para ver o que está estragando tudo.

Esse truque foi encontrado observando a _ssh completion, que mostra para slogin uma igualdade com ssh :

% grep compdef $fpath[-1]/_ssh
#compdef ssh slogin=ssh scp ssh-add ssh-agent ssh-keygen sftp ssh-copy-id
% 
    
por 12.12.2017 / 19:48