sdkman 的 `sdk` 命令安装在哪里

Where is the `sdk` command installed for sdkman

我刚刚安装了 sdkman 用于在我的机器 (MacOS) 上安装 grails。当我 运行 which sdk 命令时,我没有得到任何输出。但是当我 运行 sdk help 命令时 shell 能够解决它并给出正确的输出。我检查了 $PATH 环境变量中提到的所有目录,但找不到任何可执行文件 sdk。所以我的问题是 shell 如何解析 sdk 命令?

注意:我也检查了 Ubuntu,我看到了相同的行为。

好的。所以我发现了。正如@that-other-guy 在上面的评论中提到的,我使用 type -a 而不是 which,这表明它是一个定义的函数。

正如您正确提到的那样,"sdk" 不是命令,它是由 sdkman-main.sh(在 ~/.sdkman/src 中)创建的声明函数,一旦从 ~/.sdkman/bin/sdkman-init.sh

这就是 installation page of sdkman 要求在 .bash_profile 中附加以下步骤的原因,它在每次加载 bash 配置文件时声明此函数:

#这必须在文件的末尾,SDKMAN 才能工作!!!

[[ -s "/home/dudette/.sdkman/bin/sdkman-init.sh" ]] && source "/home/dudette/.sdkman/bin/sdkman-init.sh"

这也是 "which" 命令在检查 linux PATH

上已安装的命令时没有选择它的原因