diff --git a/install.sh b/install.sh index 459d3b5c06..b2deb8694c 100755 --- a/install.sh +++ b/install.sh @@ -296,10 +296,10 @@ nvm_detect_profile() { DETECTED_PROFILE="$HOME/.bash_profile" fi elif [ "${SHELL#*zsh}" != "$SHELL" ]; then - if [ -f "$HOME/.zshrc" ]; then - DETECTED_PROFILE="$HOME/.zshrc" - elif [ -f "$HOME/.zprofile" ]; then - DETECTED_PROFILE="$HOME/.zprofile" + if [ -f "${ZDOTDIR:-${HOME}}/.zshrc" ]; then + DETECTED_PROFILE="${ZDOTDIR:-${HOME}}/.zshrc" + elif [ -f "${ZDOTDIR:-${HOME}}/.zprofile" ]; then + DETECTED_PROFILE="${ZDOTDIR:-${HOME}}/.zprofile" fi fi diff --git a/test/install_script/nvm_detect_profile b/test/install_script/nvm_detect_profile index e9d310defc..1434574669 100755 --- a/test/install_script/nvm_detect_profile +++ b/test/install_script/nvm_detect_profile @@ -3,12 +3,16 @@ setup () { HOME="." NVM_ENV=testing \. ../../install.sh + ZDOTDIR="$HOME/zdotdir" + mkdir -p zdotdir touch ".bashrc" touch ".bash_profile" touch ".zprofile" touch ".zshrc" touch ".profile" touch "test_profile" + touch "zdotdir/.zshrc" + touch "zdotdir/.zprofile" } cleanup () { @@ -17,7 +21,9 @@ cleanup () { unset NVM_DETECT_PROFILE unset SHELL unset -f setup cleanup die + unset ZDOTDIR rm -f ".bashrc" ".bash_profile" ".zprofile" ".zshrc" ".profile" "test_profile" > "/dev/null" 2>&1 + rm -rf zdot>&1 } die () { echo "$@" '$NVM_DETECT_PROFILE:' "$NVM_DETECT_PROFILE"; cleanup; exit 1; } @@ -46,8 +52,14 @@ if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then die "nvm_detect_profile ignored \$PROFILE" fi -# .zshrc should be detected for zsh +# zdotdir/.zshrc should be detected for zsh NVM_DETECT_PROFILE="$(SHELL="/bin/zsh"; unset PROFILE; nvm_detect_profile)" +if [ "$NVM_DETECT_PROFILE" != "$ZDOTDIR/.zshrc" ]; then + die "nvm_detect_profile didn't pick \$ZDOTDIR/.zshrc for zsh" +fi + +# .zshrc should be detected for zsh +NVM_DETECT_PROFILE="$(SHELL="/bin/zsh"; unset PROFILE; unset ZDOTDIR; nvm_detect_profile)" if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then die "nvm_detect_profile didn't pick \$HOME/.zshrc for zsh" fi @@ -58,7 +70,6 @@ if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then die "nvm_detect_profile ignored \$PROFILE" fi - # # Confirm $PROFILE is only returned when it points to a valid file # @@ -102,16 +113,30 @@ if [ "$NVM_DETECT_PROFILE" != "$HOME/.bash_profile" ]; then die "nvm_detect_profile should have selected .bash_profile" fi -# Otherwise, it should favor .zprofile if file exists +# Otherwise, it should favor zdotdir/.zprofile if file exists rm ".bash_profile" NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)" +if [ "$NVM_DETECT_PROFILE" != "$ZDOTDIR/.zprofile" ]; then + die "nvm_detect_profile should have selected zdotdir/.zprofile" +fi + +# Otherwise, it should favor .zprofile if file exists +rm "zdotdir/.zprofile" +NVM_DETECT_PROFILE="$(unset SHELL; unset ZDOTDIR; nvm_detect_profile)" if [ "$NVM_DETECT_PROFILE" != "$HOME/.zprofile" ]; then die "nvm_detect_profile should have selected .zprofile" fi -# Otherwise, it should favor .zshrc if file exists +# Otherwise, it should favor zdotdir/.zshrc if file exists rm ".zprofile" NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)" +if [ "$NVM_DETECT_PROFILE" != "$ZDOTDIR/.zshrc" ]; then + die "nvm_detect_profile should have selected zdotdir/.zshrc" +fi + +# Otherwise, it should favor .zshrc if file exists +rm "zdotdir/.zshrc" +NVM_DETECT_PROFILE="$(unset SHELL; unset ZDOTDIR; nvm_detect_profile)" if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then die "nvm_detect_profile should have selected .zshrc" fi