diff --git a/test/install_script/nvm_detect_profile b/test/install_script/nvm_detect_profile
index e25572e..4a15efa 100755
--- a/test/install_script/nvm_detect_profile
+++ b/test/install_script/nvm_detect_profile
@@ -1,117 +1,111 @@
 #!/bin/sh
 
-cleanup () {
-  unset -f setup cleanup die
-  unset _PROFILE
-  rm -f .bashrc .bash_profile .zshrc .profile test_profile > /dev/null 2>&1
-}
-die () { echo $@ ; cleanup ; exit 1; }
-
-NVM_ENV=testing . ../../install.sh
-
 setup () {
-  touch .bashrc
-  touch .bash_profile
-  touch .zshrc
-  touch .profile
-  touch test_profile
+  HOME="."
+  NVM_ENV=testing . ../../install.sh
+  touch ".bashrc"
+  touch ".bash_profile"
+  touch ".zshrc"
+  touch ".profile"
+  touch "test_profile"
 }
 
-#Let's hack $HOME
-HOME="."
+cleanup () {
+  unset HOME
+  unset NVM_ENV
+  unset NVM_DETECT_PROFILE
+  unset -f setup cleanup die
+  rm -f ".bashrc" ".bash_profile" ".zshrc" ".profile" "test_profile" > "/dev/null" 2>&1
+}
+
+die () { echo "$@"; cleanup; exit 1; }
 
 setup
 
-#Let's force $SHELL to be bash
-SHELL="/bin/bash"
+#
+# Confirm profile detection via $SHELL works and that $PROFILE overrides profile detection
+#
 
-# $SHELL is set to bash and .bashrc is there, it must be detected
-_PROFILE=$(nvm_detect_profile)
-[ "_$_PROFILE" = "_$HOME/.bashrc" ] || ( echo "_\$HOME/.bashrc: _$HOME/.bashrc" &&
-                                         echo "_\$_PROFILE: _$_PROFILE" &&
-                                         die "nvm_detect_profile didn't pick $SHELL and $HOME/.bashrc" )
+# .bashrc should be detected for bash
+NVM_DETECT_PROFILE="$(declare SHELL="/bin/bash"; unset PROFILE; nvm_detect_profile)"
+if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then
+  die "nvm_detect_profile didn't pick \$HOME/.bashrc for bash"
+fi
 
-# But $PROFILE should override
-_PROFILE="$(PROFILE=test_profile nvm_detect_profile)"
-_PROFILE=$(nvm_detect_profile)
-[ "_$_PROFILE" = "_$PROFILE" ] || ( echo "_\$_PROFILE: _$_PROFILE" &&
-                                    echo "_\$PROFILE: _$PROFILE" &&
-                                    die "nvm_detect_profile didn't pick \$PROFILE" )
-unset PROFILE
+# $PROFILE should override .bashrc profile detection
+NVM_DETECT_PROFILE="$(declare SHELL="/bin/bash"; declare PROFILE="test_profile"; nvm_detect_profile)"
+if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
+  die "nvm_detect_profile ignored \$PROFILE"
+fi
+
+# .zshrc should be detected for zsh
+NVM_DETECT_PROFILE="$(declare SHELL="/usr/bin/zsh"; unset PROFILE; nvm_detect_profile)"
+if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then
+  die "nvm_detect_profile didn't pick \$HOME/.zshrc for zsh"
+fi
+
+# $PROFILE should override .zshrc profile detection
+NVM_DETECT_PROFILE="$(declare SHELL="/usr/bin/zsh"; declare PROFILE="test_profile"; nvm_detect_profile)"
+if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
+ die "nvm_detect_profile ignored \$PROFILE"
+fi
 
 
-#Let's force $SHELL to be zsh
-SHELL="/usr/bin/zsh"
+#
+# Confirm $PROFILE is only returned when it points to a valid file
+#
 
-# $SHELL is set to zsh and .zshrc is there, it must be detected
-_PROFILE=$(nvm_detect_profile)
-[ "_$_PROFILE" = "_$HOME/.zshrc" ] || ( echo "_\$HOME/.zshrc: _$HOME/.zshrc" &&
-                                        echo "_\$_PROFILE: _$_PROFILE" &&
-                                        die "nvm_detect_profile didn't pick $SHELL and $HOME/.zshrc" )
+# $PROFILE is a valid file
+NVM_DETECT_PROFILE="$(declare PROFILE="test_profile"; 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
 
-# But $PROFILE should override
-_PROFILE="$(PROFILE=test_profile nvm_detect_profile)"
-_PROFILE=$(nvm_detect_profile)
-[ "_$_PROFILE" = "_$PROFILE" ] || ( echo "_\$_PROFILE: _$_PROFILE" &&
-                                    echo "_\$PROFILE: _$PROFILE" &&
-                                    die "nvm_detect_profile didn't pick \$PROFILE" )
-unset PROFILE
+# $PROFILE is not a valid file
+rm "test_profile"
+NVM_DETECT_PROFILE="$(declare PROFILE="test_profile"; nvm_detect_profile)"
+if [ "$NVM_DETECT_PROFILE" = "test_profile" ]; then
+  die "nvm_detect_profile picked \$PROFILE when it was an invalid file"
+fi
 
-# if we unset shell it looks for the files
-unset SHELL
-
-# $PROFILE points to a valid file, its path must be returned
-PROFILE="test_profile"
-_PROFILE=$(nvm_detect_profile)
-[ "_$_PROFILE" = "_$PROFILE" ] || ( echo "_\$_PROFILE: _$_PROFILE" &&
-                                    echo "_\$PROFILE: _$PROFILE" &&
-                                    die "nvm_detect_profile didn't pick \$PROFILE" )
-
-# $PROFILE doesn't point to a valid file, its path must not be returned
-PROFILE="invalid_profile"
-_PROFILE=$(nvm_detect_profile)
-[ "_$_PROFILE" != "_$PROFILE" ] || ( echo "_\$_PROFILE: _$_PROFILE" &&
-                                     echo "_\$PROFILE: _$PROFILE" &&
-                                     die "nvm_detect_profile shouldn't pick \$PROFILE when it's not a valid file" )
-
-
-# Below are tests for when $PROFILE is undefined
-rm test_profile
-unset PROFILE
+#
+# When profile detection fails via both $PROFILE and $SHELL, profile detection should select based on the existence of
+# one of the following files is the following order: .profile, .bashrc, .bash_profile, .zshrc and
+# return an empty value if everything fails
+#
 
 # It should favor .profile if file exists
-_PROFILE=$(nvm_detect_profile)
-[ "_$_PROFILE" = "_$HOME/.profile" ] || ( echo "_\$_PROFILE: _$_PROFILE" &&
-                                          echo "_\$PROFILE: _$PROFILE" &&
-                                          die "nvm_detect_profile should have selected .profile" )
+NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
+if [ "$NVM_DETECT_PROFILE" != "$HOME/.profile" ]; then
+  die "nvm_detect_profile should have selected .profile ($NVM_DETECT_PROFILE) ($SHELL)"
+fi
 
-rm .profile
 # Otherwise, it should favor .bashrc if file exists
-_PROFILE=$(nvm_detect_profile)
-[ "_$_PROFILE" = "_$HOME/.bashrc" ] || ( echo "_\$_PROFILE: _$_PROFILE" &&
-                                         echo "_\$PROFILE: _$PROFILE" &&
-                                         die "nvm_detect_profile should have selected .bashrc" )
+rm ".profile"
+NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
+if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then
+  die "nvm_detect_profile should have selected .bashrc"
+fi
 
-rm .bashrc
 # Otherwise, it should favor .bash_profile if file exists
-_PROFILE=$(nvm_detect_profile)
-[ "_$_PROFILE" = "_$HOME/.bash_profile" ] || ( echo "_\$_PROFILE: _$_PROFILE" &&
-                                               echo "_\$PROFILE: _$PROFILE" &&
-                                               die "nvm_detect_profile should have selected .bash_profile" )
+rm ".bashrc"
+NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
+if [ "$NVM_DETECT_PROFILE" != "$HOME/.bash_profile" ]; then
+  die "nvm_detect_profile should have selected .bash_profile"
+fi
 
-rm .bash_profile
 # Otherwise, it should favor .zshrc if file exists
-_PROFILE=$(nvm_detect_profile)
-[ "_$_PROFILE" = "_$HOME/.zshrc" ] || ( echo "_\$_PROFILE: _$_PROFILE" &&
-                                        echo "_\$PROFILE: _$PROFILE" &&
-                                        die "nvm_detect_profile should have selected .zshrc" )
+rm ".bash_profile"
+NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
+if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then
+  die "nvm_detect_profile should have selected .zshrc"
+fi
 
-rm .zshrc
 # It should be empty if none is found
-_PROFILE=$(nvm_detect_profile)
-[ -z "$_PROFILE" ] || ( echo "_\$_PROFILE: _$_PROFILE" &&
-                        echo "_\$PROFILE: _$PROFILE" &&
-                        die "nvm_detect_profile should have echo'ed an empty value" )
-
+rm ".zshrc"
+NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
+if [ ! -z "$NVM_DETECT_PROFILE" ]; then
+  die "nvm_detect_profile should have returned an empty value"
+fi
 
 cleanup
