这个问题最初是在 SO 上提出的,这是不正确的。由于我无法(得到它)转移到服务器故障,所以我重新询问它。
我正在尝试为ssh
命令配置制表符补全zsh
以使用附加 known_hosts
文件(不在 中~/.ssh
)。另外,我的意思是我仍然想使用“默认”known_hosts
文件。
目前,当我点击TAB
after时ssh
,我会得到一个似乎来自~/.ssh/known_hosts
和 (可能)的主机列表/etc/hosts
。我还想获取 中列出的主机~/other/path/known_hosts
。
我在网上找到了很多材料,但不知何故我无法理解这一点。例如,zsh 网站列出了一个听起来很有style
前途的名称。另外,当我看到它是如何使用的时,它似乎很重要。known-hosts-files
但我不知道如何使用known-hosts-files
.
例如,我在我的 中尝试了以下操作.zshrc
:
zstyle ':completion:*:*:ssh:*:*' known-hosts-files '~/other/path/known_hosts'
以及它的许多变体都无济于事。
为了更好地衡量,我还添加了(在我的.zshrc
):
zstyle ":completion:*:commands" rehash 1
但这并没有改变任何事情。
这里有一个关于serverfault 的旧答案和另一个答案)解决相同的问题,但我不完全理解它们,似乎应该完全known-hosts-files
按照我想要的方式进行?
我还使用 Oh-my-zsh,如果这很重要的话......
好吧,终于我找到了罪魁祸首:引号。
当设置
known-hosts-files
为单个文件时(如我的示例),可以使用引号,但不能使用~
!将其添加到
.zshrc
按预期工作(macOS):事后看来,这似乎是合理的:要设置
known-hosts-files
为文件列表,根本不要使用引号(~
然后可以再次使用)。所以以下工作:
这似乎与 shell 将引用的文本解释为单个字符串的事实有关......自然......