Detect shell type from $SHELL variable instead of .$SHELLrc files
diff --git a/install.sh b/install.sh
index 16d8fe1..67bb71a 100755
--- a/install.sh
+++ b/install.sh
@@ -117,16 +117,38 @@
# Otherwise, an empty string is returned
#
nvm_detect_profile() {
- if [ -f "$PROFILE" ]; then
- echo "$PROFILE"
- elif [ -f "$HOME/.bashrc" ]; then
- echo "$HOME/.bashrc"
- elif [ -f "$HOME/.bash_profile" ]; then
- echo "$HOME/.bash_profile"
- elif [ -f "$HOME/.zshrc" ]; then
- echo "$HOME/.zshrc"
- elif [ -f "$HOME/.profile" ]; then
- echo "$HOME/.profile"
+
+ local DETECTED_PROFILE
+ DETECTED_PROFILE=''
+ local SHELLTYPE
+ SHELLTYPE="$(basename /$SHELL)"
+
+ if [ $SHELLTYPE = "bash" ]; then
+ if [ -f "$HOME/.bashrc" ]; then
+ DETECTED_PROFILE="$HOME/.bashrc"
+ elif [ -f "$HOME/.bash_profile" ]; then
+ DETECTED_PROFILE="$HOME/.bash_profile"
+ fi
+ elif [ $SHELLTYPE = "zsh" ]; then
+ DETECTED_PROFILE="$HOME/.zshrc"
+ fi
+
+ if [ -z $DETECTED_PROFILE ]; then
+ if [ -f "$PROFILE" ]; then
+ DETECTED_PROFILE="$PROFILE"
+ elif [ -f "$HOME/.profile" ]; then
+ DETECTED_PROFILE="$HOME/.profile"
+ elif [ -f "$HOME/.bashrc" ]; then
+ DETECTED_PROFILE="$HOME/.bashrc"
+ elif [ -f "$HOME/.bash_profile" ]; then
+ DETECTED_PROFILE="$HOME/.bash_profile"
+ elif [ -f "$HOME/.zshrc" ]; then
+ DETECTED_PROFILE="$HOME/.zshrc"
+ fi
+ fi
+
+ if [ ! -z $DETECTED_PROFILE ]; then
+ echo "$DETECTED_PROFILE"
fi
}
diff --git a/test/install_script/nvm_detect_profile b/test/install_script/nvm_detect_profile
index 08aea82..8676bcf 100755
--- a/test/install_script/nvm_detect_profile
+++ b/test/install_script/nvm_detect_profile
@@ -22,46 +22,80 @@
setup
+#Let's force $SHELL to be bash
+SHELL="/bin/bash"
+
+# $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\n" \
+ echo "_\$_PROFILE: _$_PROFILE\n" \
+ die "nvm_detect_profile didn't pick $SHELL and $HOME/.bashrc"
+
+#Let's force $SHELL to be zsh
+SHELL="/usr/bin/zsh"
+
+# $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\n" \
+ echo "_\$_PROFILE: _$_PROFILE\n" \
+ die "nvm_detect_profile didn't pick $SHELL and $HOME/.zshrc"
+
+
+# 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" ] || die "nvm_detect_profile didn't pick \$PROFILE"
+[ "_$_PROFILE" = "_$PROFILE" ] || echo "_\$_PROFILE: _$_PROFILE\n" \
+ echo "_\$PROFILE: _$PROFILE\n" \
+ 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" ] || die "nvm_detect_profile shouldn't pick \$PROFILE when it's not a valid file"
+[ "_$_PROFILE" != "_$PROFILE" ] || echo "_\$_PROFILE: _$_PROFILE\n" \
+ echo "_\$PROFILE: _$PROFILE\n" \
+ 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
-# It should favor .bashrc if file exists
+# It should favor .profile if file exists
_PROFILE=$(nvm_detect_profile)
-[ "_$_PROFILE" = "_$HOME/.bashrc" ] || die "nvm_detect_profile should have selected .bashrc"
+[ "_$_PROFILE" = "_$HOME/.profile" ] || echo "_\$_PROFILE: _$_PROFILE\n" \
+ echo "_\$PROFILE: _$PROFILE\n" \
+ die "nvm_detect_profile should have selected .profile"
+
+rm .profile
+# Otherwise, it should favor .bashrc if file exists
+_PROFILE=$(nvm_detect_profile)
+[ "_$_PROFILE" = "_$HOME/.bashrc" ] || echo "_\$_PROFILE: _$_PROFILE\n" \
+ echo "_\$PROFILE: _$PROFILE\n" \
+ die "nvm_detect_profile should have selected .bashrc"
rm .bashrc
# Otherwise, it should favor .bash_profile if file exists
_PROFILE=$(nvm_detect_profile)
-[ "_$_PROFILE" = "_$HOME/.bash_profile" ] || die "nvm_detect_profile should have selected .bash_profile"
+[ "_$_PROFILE" = "_$HOME/.bash_profile" ] || echo "_\$_PROFILE: _$_PROFILE\n" \
+ echo "_\$PROFILE: _$PROFILE\n" \
+ die "nvm_detect_profile should have selected .bash_profile"
rm .bash_profile
# Otherwise, it should favor .zshrc if file exists
_PROFILE=$(nvm_detect_profile)
-[ "_$_PROFILE" = "_$HOME/.zshrc" ] || die "nvm_detect_profile should have selected .zshrc"
+[ "_$_PROFILE" = "_$HOME/.zshrc" ] || echo "_\$_PROFILE: _$_PROFILE\n" \
+ echo "_\$PROFILE: _$PROFILE\n" \
+ die "nvm_detect_profile should have selected .zshrc"
rm .zshrc
-# Otherwise, it should favor .profile if file exists
-_PROFILE=$(nvm_detect_profile)
-[ "_$_PROFILE" = "_$HOME/.profile" ] || die "nvm_detect_profile should have selected .profile"
-
-rm .profile
# It should be empty if none is found
_PROFILE=$(nvm_detect_profile)
-[ -z "$_PROFILE" ] || die "nvm_detect_profile should have echo'ed an empty value"
+[ -z "$_PROFILE" ] || echo "_\$_PROFILE: _$_PROFILE\n" \
+ echo "_\$PROFILE: _$PROFILE\n" \
+ die "nvm_detect_profile should have echo'ed an empty value"
cleanup
-