为什么zsh完成适用于VBoxManage但不适用于vboxmanage?

sw1*_*1nn 5 zsh zsh-completion

我在arch linux上安装了zsh-completions.VBoxManage命令的完成似乎工作正常,但vboxmanage没有(即只是简单完成本地目录中的文件).这两个VBoxManagevboxmanage是符号链接到VBox可执行文件.

我的_virtualbox完成定义似乎有第一行

#compdef VBoxManage=vboxmanage VBoxHeadless=vboxheadless
Run Code Online (Sandbox Code Playgroud)

看起来像某种别名?但它不起作用.

我有一个修复方法是将上面的行更改为

#compdef VBoxManage=vboxmanage vboxmanage=vboxmanage VBoxHeadless=vboxheadless vboxheadless=vboxheadless
Run Code Online (Sandbox Code Playgroud)

这看起来很啰嗦,有一个指定模式的选项,但是这样命名别名的正确方法是什么?

Pyt*_*Nut 1

compdef _VBoxManage vboxmanage
compdef _VBoxHeadless vboxheadless
Run Code Online (Sandbox Code Playgroud)

在您的中~/.zshrc是指定命令的完成函数的正确方法。出于显而易见的原因,不建议在源代码中编辑实际函数。