Almost 2 years ago, I started to use asdf which is a great tool with a weird name (at first sight, I felt like I just pressed 4 continuous letters with a QWERTY layout!). For me, it's a version manager Kraken!
Image source: Openclipart
So what's actually asdf? Simply asdf manages your local tools/languages version, supports plugins and works on Linux and MacOS. Let me quote the intro from the tool page:
asdf is a CLI tool that can manage multiple language runtime versions on a per-project basis. It is like gvm, nvm, rbenv & pyenv (and more) all in one! Simply install your language's plugin!
For example, I'm working with different Kubernetes clusters, and not all of them with the same version. And according to the Kubernetes version skew policy, kubectl is supported within one minor version (older or newer) of kube-apiserver. That means I need different versions of kubectl to work with Kubernetes clusters if the difference between them is more or less 1 version.
Here it comes asdf where it allows you to have different kubectl versions per folder/project! And it supports tons of tools and languages (for example, you can have different Python versions per folder/project).
And asdf is not only a great tool for individual usage but also on the team level. Where you are sure all team members are using the same versions for the same projects. That really reduces change errors and conflicts.
I will not write any further about asdf. This post is just this quick intro about a tool I really like. To start using it, take a look at asdf Introduction as well as Getting Started page; they have all that you need to start with it.
Enjoy :-)