[Fix] handle unbound shell variables.

Fixes #868.
diff --git a/nvm.sh b/nvm.sh
index 9980515..ef593cb 100755
--- a/nvm.sh
+++ b/nvm.sh
@@ -68,13 +68,16 @@
 
 # Make zsh glob matching behave same as bash
 # This fixes the "zsh: no matches found" errors
+if [ -z "${NVM_CD_FLAGS-}"]; then
+  export NVM_CD_FLAGS=''
+fi
 if nvm_has "unsetopt"; then
   unsetopt nomatch 2>/dev/null
   NVM_CD_FLAGS="-q"
 fi
 
 # Auto detect the NVM_DIR when not set
-if [ -z "$NVM_DIR" ]; then
+if [ -z "${NVM_DIR-}" ]; then
   if [ -n "$BASH_SOURCE" ]; then
     NVM_SCRIPT_SOURCE="${BASH_SOURCE[0]}"
   fi
@@ -85,7 +88,7 @@
 
 
 # Setup mirror location if not already set
-if [ -z "$NVM_NODEJS_ORG_MIRROR" ]; then
+if [ -z "${NVM_NODEJS_ORG_MIRROR-}" ]; then
   export NVM_NODEJS_ORG_MIRROR="https://nodejs.org/dist"
 fi
 
@@ -529,7 +532,7 @@
 
 nvm_ls() {
   local PATTERN
-  PATTERN="$1"
+  PATTERN="${1-}"
   local VERSIONS
   VERSIONS=''
   if [ "$PATTERN" = 'current' ]; then
@@ -659,7 +662,7 @@
     fi
   fi
 
-  if [ "$NVM_ADD_SYSTEM" = true ]; then
+  if [ "${NVM_ADD_SYSTEM-}" = true ]; then
     if [ -z "$PATTERN" ] || [ "_$PATTERN" = "_v" ]; then
       VERSIONS="$VERSIONS$(command printf '\n%s' 'system')"
     elif [ "$PATTERN" = 'system' ]; then
@@ -700,6 +703,7 @@
   local TYPE
   TYPE="$1"
   local PREFIX
+  PREFIX=''
   case "$TYPE-$2" in
     iojs-std) PREFIX="$(nvm_iojs_prefix)-" ;;
     node-std) PREFIX='' ;;
@@ -835,7 +839,7 @@
   local NVM_ADD_PREFIX_COMMAND
   local LAST_TWO
   case "$NVM_IMPLICIT" in
-    "$NVM_IOJS_PREFIX" | "$NVM_IOJS_RC_PREFIX")
+    "$NVM_IOJS_PREFIX")
       NVM_COMMAND="nvm_ls_remote_iojs"
       NVM_ADD_PREFIX_COMMAND="nvm_add_iojs_prefix"
       if [ "_$1" = "_local" ]; then
@@ -1146,7 +1150,7 @@
   local REINSTALL_PACKAGES_FROM
   REINSTALL_PACKAGES_FROM="$2"
 
-  if nvm_is_iojs_version "$PREFIXED_VERSION"; then
+  if nvm_is_iojs_version "$VERSION"; then
     echo 'nvm_install_node_binary does not allow an iojs-prefixed version.' >&2
     return 10
   fi
@@ -1201,11 +1205,11 @@
 }
 
 nvm_get_make_jobs() {
-  if nvm_is_natural_num "$1"; then
+  if nvm_is_natural_num "${1-}"; then
     NVM_MAKE_JOBS="$1"
     echo "number of \`make\` jobs: $NVM_MAKE_JOBS"
     return
-  elif [ -n "$1" ]; then
+  elif [ -n "${1-}" ]; then
     unset NVM_MAKE_JOBS
     echo >&2 "$1 is invalid for number of \`make\` jobs, must be a natural number"
   fi
@@ -1290,9 +1294,9 @@
     command tar -xzf "$tmptarball" -C "$tmpdir" && \
     cd "$tmpdir/node-$VERSION" && \
     ./configure --prefix="$VERSION_PATH" $ADDITIONAL_PARAMETERS && \
-    $make -j $NVM_MAKE_JOBS $MAKE_CXX && \
+    $make -j $NVM_MAKE_JOBS ${MAKE_CXX-} && \
     command rm -f "$VERSION_PATH" 2>/dev/null && \
-    $make -j $NVM_MAKE_JOBS $MAKE_CXX install
+    $make -j $NVM_MAKE_JOBS ${MAKE_CXX-} install
     )
   then
     if ! nvm_has "npm" ; then
@@ -1371,14 +1375,14 @@
     return 2
   fi
 
-  if [ -n "$PREFIX" ] && ! (nvm_tree_contains_path "$NVM_DIR" "$PREFIX" >/dev/null 2>&1); then
+  if [ -n "${PREFIX-}" ] && ! (nvm_tree_contains_path "$NVM_DIR" "$PREFIX" >/dev/null 2>&1); then
     nvm deactivate >/dev/null 2>&1
     echo >&2 "nvm is not compatible with the \"PREFIX\" environment variable: currently set to \"$PREFIX\""
     echo >&2 "Run \`unset PREFIX\` to unset it."
     return 3
   fi
 
-  if [ -n "$NPM_CONFIG_PREFIX" ] && ! (nvm_tree_contains_path "$NVM_DIR" "$NPM_CONFIG_PREFIX" >/dev/null 2>&1); then
+  if [ -n "${NPM_CONFIG_PREFIX-}" ] && ! (nvm_tree_contains_path "$NVM_DIR" "$NPM_CONFIG_PREFIX" >/dev/null 2>&1); then
     nvm deactivate >/dev/null 2>&1
     echo >&2 "nvm is not compatible with the \"NPM_CONFIG_PREFIX\" environment variable: currently set to \"$NPM_CONFIG_PREFIX\""
     echo >&2 "Run \`unset NPM_CONFIG_PREFIX\` to unset it."
@@ -1702,6 +1706,9 @@
         fi
       fi
       if [ "$NVM_INSTALL_SUCCESS" != true ]; then
+        if [ -z "${NVM_MAKE_JOBS-}" ]; then
+          nvm_get_make_jobs
+        fi
         if [ "$NVM_IOJS" != true ] &&  [ "$NVM_NODE_MERGED" != true ]; then
           if nvm_install_node_source "$VERSION" "$NVM_MAKE_JOBS" "$ADDITIONAL_PARAMETERS"; then
             NVM_INSTALL_SUCCESS=true
@@ -1794,18 +1801,22 @@
         echo "$NVM_DIR/*/bin removed from \$PATH"
       fi
 
-      NEWPATH="$(nvm_strip_path "$MANPATH" "/share/man")"
-      if [ "_$MANPATH" = "_$NEWPATH" ]; then
-        echo "Could not find $NVM_DIR/*/share/man in \$MANPATH" >&2
-      else
-        export MANPATH="$NEWPATH"
-        echo "$NVM_DIR/*/share/man removed from \$MANPATH"
+      if [ -n "${MANPATH-}" ]; then
+        NEWPATH="$(nvm_strip_path "$MANPATH" "/share/man")"
+        if [ "_$MANPATH" = "_$NEWPATH" ]; then
+          echo "Could not find $NVM_DIR/*/share/man in \$MANPATH" >&2
+        else
+          export MANPATH="$NEWPATH"
+          echo "$NVM_DIR/*/share/man removed from \$MANPATH"
+        fi
       fi
 
-      NEWPATH="$(nvm_strip_path "$NODE_PATH" "/lib/node_modules")"
-      if [ "_$NODE_PATH" != "_$NEWPATH" ]; then
-        export NODE_PATH="$NEWPATH"
-        echo "$NVM_DIR/*/lib/node_modules removed from \$NODE_PATH"
+      if [ -n "${NODE_PATH-}" ]; then
+        NEWPATH="$(nvm_strip_path "$NODE_PATH" "/lib/node_modules")"
+        if [ "_$NODE_PATH" != "_$NEWPATH" ]; then
+          export NODE_PATH="$NEWPATH"
+          echo "$NVM_DIR/*/lib/node_modules removed from \$NODE_PATH"
+        fi
       fi
     ;;
     "use" )
@@ -1898,7 +1909,7 @@
       hash -r
       export NVM_PATH="$NVM_VERSION_DIR/lib/node"
       export NVM_BIN="$NVM_VERSION_DIR/bin"
-      if [ "$NVM_SYMLINK_CURRENT" = true ]; then
+      if [ "${NVM_SYMLINK_CURRENT-}" = true ]; then
         command rm -f "$NVM_DIR/current" && ln -s "$NVM_VERSION_DIR" "$NVM_DIR/current"
       fi
       local NVM_USE_OUTPUT
@@ -2057,7 +2068,7 @@
     "ls" | "list" )
       local NVM_LS_OUTPUT
       local NVM_LS_EXIT_CODE
-      NVM_LS_OUTPUT=$(nvm_ls "$2")
+      NVM_LS_OUTPUT=$(nvm_ls "${2-}")
       NVM_LS_EXIT_CODE=$?
       nvm_print_versions "$NVM_LS_OUTPUT"
       if [ $# -eq 1 ]; then
@@ -2067,7 +2078,7 @@
     ;;
     "ls-remote" | "list-remote" )
       local PATTERN
-      PATTERN="$2"
+      PATTERN="${2-}"
       local NVM_IOJS_PREFIX
       NVM_IOJS_PREFIX="$(nvm_iojs_prefix)"
       local NVM_NODE_PREFIX
@@ -2172,7 +2183,7 @@
       command mkdir -p "$NVM_ALIAS_DIR"
       if [ $# -le 2 ]; then
         local DEST
-        for ALIAS_PATH in "$NVM_ALIAS_DIR"/"$2"*; do
+        for ALIAS_PATH in "$NVM_ALIAS_DIR"/"${2-}"*; do
           ALIAS="$(command basename "$ALIAS_PATH")"
           DEST="$(nvm_alias "$ALIAS" 2> /dev/null)"
           if [ -n "$DEST" ]; then
@@ -2202,7 +2213,7 @@
         done
         return
       fi
-      if [ -z "$3" ]; then
+      if [ -z "${3-}" ]; then
         command rm -f "$NVM_ALIAS_DIR/$2"
         echo "$2 -> *poof*"
         return