From c37dbbecb4881bc6030c35fa31725147f7bbe010 Mon Sep 17 00:00:00 2001 From: Cristian Consonni Date: Sun, 19 Jul 2015 02:01:06 +0200 Subject: [PATCH] Detect shell type from $SHELL variable instead of .$SHELLrc files --- install.sh | 42 +++++++++++++----- test/install_script/nvm_detect_profile | 60 ++++++++++++++++++++------ 2 files changed, 79 insertions(+), 23 deletions(-) diff --git a/install.sh b/install.sh index 16d8fe1..67bb71a 100755 --- a/install.sh +++ b/install.sh @@ -117,16 +117,38 @@ install_nvm_as_script() { # 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 @@ HOME="." 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 -