Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Where is the `sdk` command installed for sdkman

Tags:

I just installed sdkman for installing grails on my machine (MacOS). When I run which sdk command I don't get any output. But when I run the sdk help command the shell is able to resolve it and give the right output. I checked all the directories mentioned in $PATH environment variable but I could not find any executable sdk. So my question is how is shell able to resolve the sdk command?

Note: I also checked in Ubuntu and I see the same behavior.

enter image description here enter image description here

like image 258
Amrish Avatar asked Jul 08 '17 16:07

Amrish


2 Answers

As you mentioned correctly "sdk" is not a command, its a declared function created by sdkman-main.sh (in ~/.sdkman/src) once called from ~/.sdkman/bin/sdkman-init.sh

This is the reason why the installation page of sdkman asks for appending the following steps in the .bash_profile which declares this function each time the bash profile is loaded :

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!

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

This is also the reason "which" command doesn't pick it up as it checks for the installed commands on the linux PATH

like image 103
cmxiv 914 Avatar answered Oct 12 '22 12:10

cmxiv 914


OK. So I found it out. As @that-other-guy mentioned in the comment above, I used type -a instead of which, which showed me that it was a function defined.

like image 42
Amrish Avatar answered Oct 12 '22 12:10

Amrish