我使用该sshrc
包及其同名命令使远程计算机的 shell 在 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
。这可能会受到您的 shell 配置的阻碍;在这种情况下,您需要将您的配置一分为二,看看是什么搞砸了。
这个技巧是通过查看_ssh
补全结果发现的,它显示slogin
与 相等ssh
:
% grep compdef $fpath[-1]/_ssh
#compdef ssh slogin=ssh scp ssh-add ssh-agent ssh-keygen sftp ssh-copy-id
%