从 zsh 中 ssh 的完成列表中删除主机

从 zsh 中 ssh 的完成列表中删除主机

我曾经有一些名为“myhost”、“myhost1”等的主机。现在除了“myhost3”之外的所有主机都变得无效。我从/etc/hosts和中删除了它们~/.ssh/known_hosts,但 zsh 仍然为我完成了它们。我还应该编辑其他文件以使 zsh 忘记这些主机吗?

我没有更改 zsh 配置中与主机相关的任何内容;他们默认出现。

更新:

一段时间后(休眠后但未重新启动),这些主机消失。也许 zsh 清除了某种缓存? (但不是~/.zcompdump我检查的那样。我也尝试启动 zsh 的新实例,但这没有什么区别。)

稍后我会尝试和测试。

更新#2:

我再次尝试,成功从完成列表中删除了一个新添加的主机。也许是我之前做错了什么,抱歉。

答案1

从实验来看,zsh 确实用于.ssh/known_hosts自动完成,但它仅在启动/首次使用时读取。

删除有问题的主机(ssh-keygen -R hostname或简单地编辑.ssh/known_hosts),然后重新启动 shell 似乎可以工作。

答案2

我不知道 zsh 如何完成它们,但我自己开发的 bash 完成脚本也会查看~/.ssh/config.也许检查一下主机是否在那里?

或者,strace -eopen在自动完成的同时进行 zsh 进程并查看它的外观:)

答案3

您可能需要删除 zsh 完成缓存~/.zcompdump(或者$_comp_dumpfile如果您更改了位置)。

相关内容