diff --git a/nvm-exec b/nvm-exec index 44d5ddb..5e88766 100755 --- a/nvm-exec +++ b/nvm-exec @@ -1,6 +1,9 @@ #!/usr/bin/env bash -DIR="$(command cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SOURCE=${BASH_SOURCE[0]} +test -L "$SOURCE" && command cd "$( dirname "$SOURCE" )" && \ + SOURCE=$(readlink "$SOURCE") +DIR="$(command cd "$( dirname "$SOURCE" )" && pwd )" unset NVM_CD_FLAGS diff --git a/nvm.sh b/nvm.sh index d943896..841eb49 100755 --- a/nvm.sh +++ b/nvm.sh @@ -1265,10 +1265,9 @@ nvm_list_aliases() { if [ -n "${LTS_ALIAS}" ]; then nvm_echo "${LTS_ALIAS}" fi - } & + } done - wait - ) | command sort + ) return } @@ -2534,12 +2533,12 @@ nvm_extract_tarball() { if [ "${NVM_OS}" = 'openbsd' ]; then if [ "${tar_compression_flag}" = 'J' ]; then - command xzcat "${TARBALL}" | "${tar}" -xf - -C "${TMPDIR}" -s '/[^\/]*\///' || return 1 + command xzcat "${TARBALL}" | "${tar}" --no-same-owner -xf - -C "${TMPDIR}" -s '/[^\/]*\///' || return 1 else - command "${tar}" -x${tar_compression_flag}f "${TARBALL}" -C "${TMPDIR}" -s '/[^\/]*\///' || return 1 + command "${tar}" --no-same-owner -x${tar_compression_flag}f "${TARBALL}" -C "${TMPDIR}" -s '/[^\/]*\///' || return 1 fi else - command "${tar}" -x${tar_compression_flag}f "${TARBALL}" -C "${TMPDIR}" --strip-components 1 || return 1 + command "${tar}" --no-same-owner -x${tar_compression_flag}f "${TARBALL}" -C "${TMPDIR}" --strip-components 1 || return 1 fi } @@ -4080,7 +4079,9 @@ nvm() { nvm_echo "Running node ${VERSION}$(nvm use --silent "${VERSION}" && nvm_print_npm_version)" fi fi - NODE_VERSION="${VERSION}" "${NVM_DIR}/nvm-exec" "$@" + NVM_EXEC="$NVM_DIR/nvm-exec" + test ! -f "$NVM_EXEC" && NVM_EXEC="$(dirname "${BASH_SOURCE[0]-}")/nvm-exec" + NODE_VERSION="$VERSION" "$NVM_EXEC" "$@" ;; "ls" | "list") local PATTERN diff --git "a/test/slow/nvm exec/Running \"nvm exec --lts\" when NVM_DIR differs from nvm" "b/test/slow/nvm exec/Running \"nvm exec --lts\" when NVM_DIR differs from nvm" new file mode 100644 index 0000000..ee314be --- /dev/null +++ "b/test/slow/nvm exec/Running \"nvm exec --lts\" when NVM_DIR differs from nvm" @@ -0,0 +1,18 @@ +#!/bin/sh + +set -ex + +die () { echo "$@" ; exit 1; } + +INSTPATH="$(mktemp -p "$(pwd)" -d)" +trap 'test ! -z "${INSTPATH-}" && test -d "$INSTPATH" && rm -rf "$INSTPATH"' EXIT +declare -x NVM_DIR=$INSTPATH +\. ../../../nvm.sh + +nvm install --lts || die 'nvm install --lts failed' +nvm exec --lts npm --version || die "`nvm exec` failed to run" +declare -x NODE_VERSION="$(nvm exec --lts --silent node --version)" + +ln -s ../../../../nvm-exec "$INSTPATH/nvm-exec" || die "failed to create a symlink to $INSTPATH/" +"$INSTPATH/nvm-exec" npm ls > /dev/null || die "`nvm exec` failed to run using nvm-exec helper" +