Instead of using expr to check if paths need cleaning, compare cleaned paths to original paths and export appropriately.
diff --git a/nvm.sh b/nvm.sh
index 1c0845e..e543295 100644
--- a/nvm.sh
+++ b/nvm.sh
@@ -607,24 +607,30 @@
;;
"deactivate" )
- if [ `expr "$PATH" : ".*$NVM_DIR/.*/bin.*"` != 0 ] ; then
- export PATH=`nvm_strip_path "$PATH" "/bin"`
+ local NEWPATH
+ NEWPATH="$(nvm_strip_path "$PATH" "/bin")"
+ if [ "$PATH" = "$NEWPATH" ]; then
+ echo "Could not find $NVM_DIR/*/bin in \$PATH" >&2
+ else
+ export PATH="$NEWPATH"
hash -r
echo "$NVM_DIR/*/bin removed from \$PATH"
- else
- echo "Could not find $NVM_DIR/*/bin in \$PATH" >&2
fi
- if [ `expr "$MANPATH" : ".*$NVM_DIR/.*/share/man.*"` != 0 ] ; then
- export MANPATH=`nvm_strip_path "$MANPATH" "/share/man"`
- echo "$NVM_DIR/*/share/man removed from \$MANPATH"
- else
+
+ NEWPATH="$(nvm_strip_path "$MANPATH" "/share/man")"
+ if [ "$MANPATH" = "$NEWPATH" ]; then
echo "Could not find $NVM_DIR/*/share/man in \$MANPATH" >&2
- fi
- if [ `expr "$NODE_PATH" : ".*$NVM_DIR/.*/lib/node_modules.*"` != 0 ] ; then
- export NODE_PATH=`nvm_strip_path "$NODE_PATH" "/lib/node_modules"`
- echo "$NVM_DIR/*/lib/node_modules removed from \$NODE_PATH"
else
+ export MANPATH="$NEWPATH"
+ echo "$NVM_DIR/*/share/man removed from \$MANPATH"
+ fi
+
+ NEWPATH="$(nvm_strip_path "$NODE_PATH" "/lib/node_modules")"
+ if [ "$NODE_PATH" = "$NEWPATH" ]; then
echo "Could not find $NVM_DIR/*/lib/node_modules in \$NODE_PATH" >&2
+ else
+ export NODE_PATH="$NEWPATH"
+ echo "$NVM_DIR/*/lib/node_modules removed from \$NODE_PATH"
fi
;;
"use" )