Recently I was wondering why my shell is taking so long to show a prompt and was able to track it to nvm – node version manager. The check which version to use as default takes quite long so I was looking for a solution that allows me to keep nvm functionality and have a fast shell.
When installing nvm it tells you to add the following statement to your shell config:
export NVM_DIR="$HOME/.nvm" [ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh" --no-use # This loads nvm [ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion
Line to of this is causes the delay in the startup. As more on the backend side of development I don’t switch node versions and so on around very often so I found a solution that let’s me disable this check, which version should be used on nvm startup by adding a default version to the path and disable that check in the startup script:
# set default node version export PATH="~/.nvm/versions/node/v12.18.3/bin:$PATH" export NVM_DIR="$HOME/.nvm" [ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh" --no-use # This loads default nvm version from above and skips default check [ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion
The first line set my default node version to 12.18.3 as default – which is stable right now. Then I added
--no-use to the end of the second line. Now every time i start the shell node 12.18.3 will be used until i say
nvm use. But that’s a tradeoff I can live with to have my shell start in an acceptable timespan again.