Skip to content

Instantly share code, notes, and snippets.

@disouzam
Last active October 24, 2025 23:34
Show Gist options
  • Select an option

  • Save disouzam/a18572104c5bc69f43fa9d414ec280a3 to your computer and use it in GitHub Desktop.

Select an option

Save disouzam/a18572104c5bc69f43fa9d414ec280a3 to your computer and use it in GitHub Desktop.
Conditional loading of nvm in bash
export NVM_DIR="$HOME/.nvm"
# Timing functionality provided by this Unix Stack Exchange answer:
# https://unix.stackexchange.com/questions/52313/how-to-get-execution-time-of-a-script-effectively/52347#52347
function load_nvm() {
start=`date +%s`
echo 'Loading nvm...'
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
echo 'nvm loaded.'
end=`date +%s`
runtime=$((end-start))
echo "nvm load time: $runtime seconds"
echo ""
}
function load_nvm_bash_completion() {
start=`date +%s`
echo 'Loading nvm bash_completion...'
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
echo 'nvm bash_completion loaded.'
end=`date +%s`
runtime=$((end-start))
echo "nvm bash_completion load time: $runtime seconds"
}
# Selectively loading of nvm that takes more than 10 seconds
# The default behavior is to not load nvm
read -n 1 -t 2 -p "Load nvm? (Y/N)" load_nvm_user_option
load_nvm_user_option="$(echo "$load_nvm_user_option" | tr '[:upper:]' '[:lower:]')"
if [[ "$load_nvm_user_option" =~ ^[YyNn]+$ && "$load_nvm_user_option" == "y" ]]; then
echo -e "\nnvm utility will be loaded soon...\n"
# [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
load_nvm
# [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
load_nvm_bash_completion
else
echo -e "\nnvm will not be loaded!"
fi
@disouzam
Copy link
Author

nvm not loaded:

image

@disouzam
Copy link
Author

nvm loaded:

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment