我曾经有一些名为“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
如果您更改了位置)。