From 192b2ecb1b4d15c0f86393b3c2a22060c1bc144c Mon Sep 17 00:00:00 2001 From: Jonas Dohse Date: Mon, 10 Mar 2014 11:59:17 +0100 Subject: [PATCH] Support deduction of nvm directory in zsh In zsh nvm fails to deduce nvm's directory from nvm.sh, because `$BASH_SOURCE` is not present in zsh. Use the directory of `$0`, if its filename is `nvm.sh`. We use `$BASH_SOUCE` in bash, `$0` in zsh (and similar) and fallback to `~/.nvm` otherwise. --- nvm.sh | 8 ++++++-- .../$BASH_SOURCE should not be a problem in sh and zsh | 8 ++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100755 test/fast/$BASH_SOURCE should not be a problem in sh and zsh diff --git a/nvm.sh b/nvm.sh index 4d6bbca..421984e 100644 --- a/nvm.sh +++ b/nvm.sh @@ -19,8 +19,12 @@ fi # Auto detect the NVM_DIR if [ ! -d "$NVM_DIR" ]; then - if [ -n "$BASH_SOURCE" ]; then - export NVM_DIR=$(cd $NVM_CD_FLAGS $(dirname ${BASH_SOURCE[0]:-$0}) > /dev/null && pwd) + if [ -n "${BASH_SOURCE}" ]; then + export NVM_DIR=$(cd $NVM_CD_FLAGS $(dirname $BASH_SOURCE) > /dev/null && pwd) + elif [ "$(basename $0)" = nvm.sh ]; then + # Works in shells that put the path of the sourcee into $0. Unfortunately + # dash is not among these. + export NVM_DIR=$(cd $NVM_CD_FLAGS $(dirname $0) > /dev/null && pwd) else export NVM_DIR=$HOME/.nvm fi diff --git a/test/fast/$BASH_SOURCE should not be a problem in sh and zsh b/test/fast/$BASH_SOURCE should not be a problem in sh and zsh new file mode 100755 index 0000000..24a7a18 --- /dev/null +++ b/test/fast/$BASH_SOURCE should not be a problem in sh and zsh @@ -0,0 +1,8 @@ +#!/bin/sh + +echo Testing bash +bash -c '. ../../nvm.sh' +echo Testing zsh +zsh -c '. ../../nvm.sh' +echo Testing sh +sh -c '. ../../nvm.sh'