zsh 완성: sshrc가 ssh처럼 동작하도록 만들기

zsh 완성: sshrc가 ssh처럼 동작하도록 만들기

나는 이 sshrc패키지와 같은 이름의 명령을 사용하여 SSH 로그인 중에 원격 시스템의 셸이 로컬 .sshrc 파일의 내용을 얻도록 합니다. 그러나 나는 zsh의 호스트 자동 완성 기능( ~/.ssh/{config,authorized_keys}/etc/hosts파일 기반)을 정말 좋아합니다 .

ssh를 sshrc로 별칭을 지정하면 zsh가 속이지 않습니다(완성된 구성을 로드하기 전에 별칭을 해결하는 것처럼 보입니다). 나는 zsh의 conf를 엉망으로 만들려고 노력했습니다. 예를 들어 /usr/share/zsh/5.3.1/functions/_ssh에 복사하고 _sshrc해당 파일을 편집하고 이름을 바꾸십시오._ssh()기능... 운이 없군요.

내 SSH 프로필에는 수천 개의 호스트가 있으므로 팁을 제공해 주셔서 대단히 감사합니다.

답변1

이것은 나에게 효과적입니다zsh 5.4.2

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

최소 구성에서 zsh -f. 이는 쉘 구성에 의해 방해될 수 있습니다. 이 경우 구성을 두 개로 분할하여 무엇이 문제인지 확인해야 합니다.

이 트릭은 다음 과 동일함을 _ssh보여주는 완료 결과를 보고 발견되었습니다 .sloginssh

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

관련 정보