[Fix] Add autocompletion support to zsh

Fixes #1707.
diff --git a/bash_completion b/bash_completion
index 47eda3e..43df83b 100644
--- a/bash_completion
+++ b/bash_completion
@@ -92,6 +92,7 @@
 # ZSH, load and run bashcompinit before calling the complete function.
 if [[ -n ${ZSH_VERSION-} ]]; then
   autoload -U +X bashcompinit && bashcompinit
+  autoload -U +X compinit && compinit
 fi
 
 complete -o default -F __nvm nvm
diff --git a/install.sh b/install.sh
index 22b4244..db12c38 100755
--- a/install.sh
+++ b/install.sh
@@ -330,6 +330,8 @@
   PROFILE_INSTALL_DIR="$(nvm_install_dir | command sed "s:^$HOME:\$HOME:")"
 
   SOURCE_STR="\\nexport NVM_DIR=\"${PROFILE_INSTALL_DIR}\"\\n[ -s \"\$NVM_DIR/nvm.sh\" ] && \\. \"\$NVM_DIR/nvm.sh\"  # This loads nvm\\n"
+  ZSH_COMPLETION_STR='# Load compinit/compdef\n autoload -U compinit\n compinit'
+  
   # shellcheck disable=SC2016
   COMPLETION_STR='[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion\n'
   BASH_OR_ZSH=false
@@ -358,6 +360,7 @@
     # shellcheck disable=SC2016
     if ${BASH_OR_ZSH} && ! command grep -qc '$NVM_DIR/bash_completion' "$NVM_PROFILE"; then
       echo "=> Appending bash_completion source string to $NVM_PROFILE"
+      command printf "$ZSH_COMPLETION_STR" >> "$NVM_PROFILE"
       command printf "$COMPLETION_STR" >> "$NVM_PROFILE"
     else
       echo "=> bash_completion source string already in ${NVM_PROFILE}"
diff --git a/test/install_script/nvm_detect_profile b/test/install_script/nvm_detect_profile
index ba5a6ea..1044659 100755
--- a/test/install_script/nvm_detect_profile
+++ b/test/install_script/nvm_detect_profile
@@ -14,6 +14,8 @@
   unset HOME
   unset NVM_ENV
   unset NVM_DETECT_PROFILE
+  unset BASH_VERSION
+  unset ZSH_VERSION
   unset -f setup cleanup die
   rm -f ".bashrc" ".bash_profile" ".zshrc" ".profile" "test_profile" > "/dev/null" 2>&1
 }
@@ -27,7 +29,7 @@
 #
 
 # .bashrc should be detected for bash
-NVM_DETECT_PROFILE="$(SHELL="/bin/bash"; unset PROFILE; nvm_detect_profile)"
+NVM_DETECT_PROFILE="$(BASH_VERSION="1"; unset PROFILE; nvm_detect_profile)"
 if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then
   die "nvm_detect_profile didn't pick \$HOME/.bashrc for bash"
 fi
@@ -39,7 +41,7 @@
 fi
 
 # .zshrc should be detected for zsh
-NVM_DETECT_PROFILE="$(SHELL="/usr/bin/zsh"; unset PROFILE; nvm_detect_profile)"
+NVM_DETECT_PROFILE="$(ZSH_VERSION="1"; unset PROFILE; unset BASH_VERSION; nvm_detect_profile)"
 if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then
   die "nvm_detect_profile didn't pick \$HOME/.zshrc for zsh"
 fi
@@ -56,7 +58,7 @@
 #
 
 # $PROFILE is a valid file
-NVM_DETECT_PROFILE="$(PROFILE="test_profile"; nvm_detect_profile)"
+NVM_DETECT_PROFILE="$(PROFILE="test_profile"; unset ZSH_VERSION; nvm_detect_profile)"
 if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
   die "nvm_detect_profile didn't pick \$PROFILE when it was a valid file"
 fi
@@ -75,35 +77,35 @@
 #
 
 # It should favor .profile if file exists
-NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
+NVM_DETECT_PROFILE="$(unset BASH_VERSION; unset ZSH_VERSION; nvm_detect_profile)"
 if [ "$NVM_DETECT_PROFILE" != "$HOME/.profile" ]; then
   die "nvm_detect_profile should have selected .profile"
 fi
 
 # Otherwise, it should favor .bashrc if file exists
 rm ".profile"
-NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
+NVM_DETECT_PROFILE="$(unset BASH_VERSION; unset ZSH_VERSION; nvm_detect_profile)"
 if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then
   die "nvm_detect_profile should have selected .bashrc"
 fi
 
 # Otherwise, it should favor .bash_profile if file exists
 rm ".bashrc"
-NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
+NVM_DETECT_PROFILE="$(unset BASH_VERSION; unset ZSH_VERSION; nvm_detect_profile)"
 if [ "$NVM_DETECT_PROFILE" != "$HOME/.bash_profile" ]; then
   die "nvm_detect_profile should have selected .bash_profile"
 fi
 
 # Otherwise, it should favor .zshrc if file exists
 rm ".bash_profile"
-NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
+NVM_DETECT_PROFILE="$(unset BASH_VERSION; unset ZSH_VERSION; nvm_detect_profile)"
 if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then
   die "nvm_detect_profile should have selected .zshrc"
 fi
 
 # It should be empty if none is found
 rm ".zshrc"
-NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
+NVM_DETECT_PROFILE="$(unset BASH_VERSION; unset ZSH_VERSION; nvm_detect_profile)"
 if [ ! -z "$NVM_DETECT_PROFILE" ]; then
   die "nvm_detect_profile should have returned an empty value"
 fi