Linux sdkman的'sdk'命令安装在哪里

Linux sdkman的'sdk'命令安装在哪里,linux,bash,sdkman,Linux,Bash,Sdkman,我只是为了在我的机器(MacOS)上安装grails而安装的。当我运行哪个sdk命令时,我没有得到任何输出。但是当我运行sdk help命令时,shell能够解析它并给出正确的输出。我检查了$PATH环境变量中提到的所有目录,但找不到任何可执行的sdk。所以我的问题是shell如何解析sdk命令 注意:我也检查了Ubuntu,我看到了同样的行为 好的。所以我发现了。正如上面评论中提到的@另一个人,我使用了type-a而不是which,这表明它是一个定义的函数 正如您正确提到的,“sdk”不是一

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

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


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

正如您正确提到的,“sdk”不是一个命令,它是由sdkman-main.sh(在~/.sdkman/src中)在~/.sdkman/bin/sdkman-init.sh调用后创建的声明函数

这就是为什么要求在.bash_配置文件中附加以下步骤的原因,该配置文件在每次加载bash配置文件时声明此函数:

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

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


这也是为什么“which”命令在检查linux路径上已安装的命令时没有选择它的原因,因为它几乎从来都不是正确的命令。使用
键入
代替谢谢!显然,它是源文件中定义的函数。