diff --git a/README.markdown b/README.markdown
index f0a2610..d6cc43b 100644
--- a/README.markdown
+++ b/README.markdown
@@ -8,11 +8,11 @@
 
 To install you could use the [install script][2] using cURL:
 
-    curl https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash
+    curl https://raw.githubusercontent.com/creationix/nvm/v0.13.0/install.sh | bash
 
 or Wget:
 
-    wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash
+    wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.13.0/install.sh | bash
 
 <sub>The script clones the nvm repository to `~/.nvm` and adds the source line to your profile (`~/.bash_profile`, `~/.zshrc` or `~/.profile`).</sub>
 
@@ -38,7 +38,7 @@
 ## Usage
 
 You can create an `.nvmrc` file containing version number in the project root directory (or any parent directory).
-`nvm use`, `nvm install`, and `nvm run` will all respect an `.nvmrc` file.
+`nvm use`, `nvm install`, `nvm exec`, and `nvm run` will all respect an `.nvmrc` file.
 
 To download, compile, and install the latest v0.10.x release of node, do this:
 
@@ -52,6 +52,10 @@
 
     nvm run 0.10 --version
 
+Or, you can run any arbitrary command in a subshell with the desired version of node:
+
+    nvm exec 0.10 node --version
+
 If you want to see what versions are installed:
 
     nvm ls
@@ -163,7 +167,7 @@
     nvm install -s 0.8.6
 
 [1]: https://github.com/creationix/nvm.git
-[2]: https://github.com/creationix/nvm/blob/v0.11.1/install.sh
+[2]: https://github.com/creationix/nvm/blob/v0.13.0/install.sh
 [3]: https://travis-ci.org/creationix/nvm
 [Urchin]: https://github.com/scraperwiki/urchin
 
diff --git a/install.sh b/install.sh
index d87137f..74bc7f5 100755
--- a/install.sh
+++ b/install.sh
@@ -44,12 +44,12 @@
     mkdir -p "$NVM_DIR"
     git clone "$NVM_SOURCE" "$NVM_DIR"
   fi
-  cd $NVM_DIR && git checkout v0.11.1 && git branch -D master
+  cd $NVM_DIR && git checkout v0.13.0 && git branch -D master || true
 }
 
 install_nvm_as_script() {
   if [ -z "$NVM_SOURCE" ]; then
-    NVM_SOURCE="https://raw.githubusercontent.com/creationix/nvm/v0.11.1/nvm.sh"
+    NVM_SOURCE="https://raw.githubusercontent.com/creationix/nvm/v0.13.0/nvm.sh"
   fi
 
   # Downloading to $NVM_DIR
diff --git a/nvm.sh b/nvm.sh
index 1197059..52bea15 100644
--- a/nvm.sh
+++ b/nvm.sh
@@ -53,6 +53,19 @@
   export NVM_NODEJS_ORG_MIRROR="http://nodejs.org/dist"
 fi
 
+nvm_tree_contains_path() {
+  local tree
+  tree="$1"
+  local node_path
+  node_path="$2"
+  local pathdir
+  pathdir=$(dirname "$node_path")
+  while [ "$pathdir" != "" ] && [ "$pathdir" != "." ] && [ "$pathdir" != "/" ] && [ "$pathdir" != "$tree" ]; do
+    pathdir=$(dirname "$pathdir")
+  done
+  [ "$pathdir" = "$tree" ]
+}
+
 # Traverse up in directory tree to find containing folder
 nvm_find_up() {
   local path
@@ -92,6 +105,11 @@
     PATTERN='current'
   fi
 
+  if [ "$PATTERN" = "current" ]; then
+    nvm_ls_current
+    return $?
+  fi
+
   VERSION=`nvm_ls $PATTERN | tail -n1`
   echo "$VERSION"
 
@@ -113,7 +131,7 @@
 }
 
 nvm_normalize_version() {
-  echo "$1" | sed -e 's/^v//' | awk -F. '{ printf("%d%03d%03d\n", $1,$2,$3); }'
+  echo "$1" | sed -e 's/^v//' | \awk -F. '{ printf("%d%03d%03d\n", $1,$2,$3); }'
 }
 
 nvm_format_version() {
@@ -142,7 +160,15 @@
 }
 
 nvm_ls_current() {
-  echo `node -v 2>/dev/null`
+  local NODE_PATH
+  NODE_PATH="$(which node)"
+  if [ $? -ne 0 ]; then
+    echo 'none'
+  elif nvm_tree_contains_path "$NVM_DIR" "$NODE_PATH"; then
+    echo `node -v 2>/dev/null`
+  else
+    echo 'system'
+  fi
 }
 
 nvm_ls() {
@@ -170,12 +196,15 @@
       PATTERN="$PATTERN."
     fi
     VERSIONS=`find "$NVM_DIR/" -maxdepth 1 -type d -name "$PATTERN*" -exec basename '{}' ';' \
-      | sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n | \grep -v '^ *\.'`
+      | sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n | \grep -v '^ *\.' | \grep -e '^v'`
   fi
   if [ -z "$VERSIONS" ]; then
     echo "N/A"
     return 3
   fi
+  if [ -z "$PATTERN" ] && nvm_has_system_node; then
+    VERSIONS="$VERSIONS$(printf '\n%s' 'system')"
+  fi
   echo "$VERSIONS"
   return
 }
@@ -205,11 +234,11 @@
 
 nvm_checksum() {
   if nvm_has "shasum"; then
-    checksum=$(shasum $1 | awk '{print $1}')
+    checksum=$(shasum $1 | \awk '{print $1}')
   elif nvm_has "sha1"; then
     checksum=$(sha1 -q $1)
   else
-    checksum=$(sha1sum $1 | awk '{print $1}')
+    checksum=$(sha1sum $1 | \awk '{print $1}')
   fi
 
   if [ "$checksum" = "$2" ]; then
@@ -233,6 +262,8 @@
       FORMAT='\033[0;32m-> %9s\033[0m'
     elif [ -d "$NVM_DIR/$VERSION" ]; then
       FORMAT='\033[0;34m%12s\033[0m'
+    elif [ "$VERSION" = "system" ]; then
+      FORMAT='\033[0;33m%12s\033[0m'
     else
       FORMAT='%12s'
     fi
@@ -317,7 +348,7 @@
       version_not_provided=0
       local provided_version
 
-      if ! nvm_has "nvm_download"; then
+      if ! nvm_has "curl" && ! nvm_has "wget"; then
         echo 'nvm needs curl or wget to proceed.' >&2;
         return 1
       fi
@@ -381,7 +412,7 @@
           if nvm_binary_available "$VERSION"; then
             t="$VERSION-$os-$arch"
             url="$NVM_NODEJS_ORG_MIRROR/$VERSION/node-${t}.tar.gz"
-            sum=`nvm_download -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt -o - | \grep node-${t}.tar.gz | awk '{print $1}'`
+            sum=`nvm_download -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt -o - | \grep node-${t}.tar.gz | \awk '{print $1}'`
             local tmpdir
             tmpdir="$NVM_DIR/bin/node-${t}"
             local tmptarball
@@ -420,7 +451,7 @@
       tmptarball="$tmpdir/node-$VERSION.tar.gz"
       if [ "`nvm_download -s -I "$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz" -o - | \grep '200 OK'`" != '' ]; then
         tarball="$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz"
-        sum=`nvm_download -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt -o - | \grep node-$VERSION.tar.gz | awk '{print $1}'`
+        sum=`nvm_download -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt -o - | \grep node-$VERSION.tar.gz | \awk '{print $1}'`
       elif [ "`nvm_download -s -I "$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz" -o - | \grep '200 OK'`" != '' ]; then
         tarball="$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz"
       fi
@@ -519,7 +550,17 @@
           VERSION=`nvm_version $NVM_RC_VERSION`
         fi
       else
-        VERSION=`nvm_version $2`
+        if [ $2 = 'system' ]; then
+          if nvm_has_system_node && nvm deactivate; then
+            echo "Now using system version of node: $(node -v 2>/dev/null)."
+            return
+          else
+            echo "System version of node not found." >&2
+            return 127
+          fi
+        else
+          VERSION=`nvm_version $2`
+        fi
       fi
       if [ -z "$VERSION" ]; then
         nvm help
@@ -598,6 +639,29 @@
       echo "Running node $VERSION"
       NODE_PATH=$RUN_NODE_PATH $NVM_DIR/$VERSION/bin/node "$@"
     ;;
+    "exec" )
+      shift
+
+      local provided_version
+      provided_version=$1
+      if [ -n "$provided_version" ]; then
+        VERSION=`nvm_version $provided_version`
+        if [ $VERSION = "N/A" ]; then
+          provided_version=''
+          nvm_rc_version
+          VERSION=`nvm_version $NVM_RC_VERSION`
+        else
+          shift
+        fi
+      fi
+
+      if [ ! -d "$NVM_DIR/$VERSION" ]; then
+        echo "$VERSION version is not installed yet" >&2
+        return 1
+      fi
+      echo "Running node $VERSION"
+      NODE_VERSION=$VERSION $NVM_DIR/nvm-exec "$@"
+    ;;
     "ls" | "list" )
       local NVM_LS_OUTPUT
       local NVM_LS_EXIT_CODE
@@ -682,7 +746,7 @@
       nvm_version $2
     ;;
     "--version" )
-      echo "0.11.1"
+      echo "0.13.0"
     ;;
     "unload" )
       unset -f nvm nvm_print_versions nvm_checksum nvm_ls_remote nvm_ls nvm_remote_version nvm_version nvm_rc_version > /dev/null 2>&1
diff --git a/package.json b/package.json
index 262c952..01f680a 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "nvm",
-  "version": "0.11.1",
+  "version": "0.13.0",
   "description": "Node Version Manager - Simple bash script to manage multiple active node.js versions",
   "directories": {
     "test": "test"
diff --git "a/test/fast/Listing versions/Running \"nvm ls node\" should return a nonzero exit code when not found" "b/test/fast/Listing versions/Running \"nvm ls node\" should return a nonzero exit code when not found"
new file mode 100755
index 0000000..f7d68f7
--- /dev/null
+++ "b/test/fast/Listing versions/Running \"nvm ls node\" should return a nonzero exit code when not found"
@@ -0,0 +1,7 @@
+ #!/bin/sh
+
+. ../../../nvm.sh
+
+nvm ls node
+[ "$?" = "3" ]
+
diff --git "a/test/fast/Listing versions/Running \"nvm ls\" should include \"system\" when appropriate" "b/test/fast/Listing versions/Running \"nvm ls\" should include \"system\" when appropriate"
new file mode 100755
index 0000000..9afd40a
--- /dev/null
+++ "b/test/fast/Listing versions/Running \"nvm ls\" should include \"system\" when appropriate"
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+die () { echo $@ ; exit 1; }
+
+. ../../../nvm.sh
+
+mkdir -p ../../../v0.0.1
+mkdir -p ../../../v0.0.3
+mkdir -p ../../../v0.0.9
+mkdir -p ../../../v0.3.1
+mkdir -p ../../../v0.3.3
+mkdir -p ../../../v0.3.9
+
+nvm_has_system_node() { return 0; }
+nvm ls | grep system 2>&1 > /dev/null
+[ $? -eq 0 ] || die '"nvm ls" did not contain "system" when system node is present'
+
+nvm_has_system_node() { return 1; }
+nvm ls | grep system 2>&1 > /dev/null
+[ $? -ne 0 ] || die '"nvm ls" contained "system" when system node is not present'
+
diff --git "a/test/fast/Running \"nvm current\" should display current nvm environment." "b/test/fast/Running \"nvm current\" should display current nvm environment."
index d9293ed..5748fd6 100755
--- "a/test/fast/Running \"nvm current\" should display current nvm environment."
+++ "b/test/fast/Running \"nvm current\" should display current nvm environment."
@@ -3,4 +3,8 @@
 die () { echo $@ ; exit 1; }
 
 . ../../nvm.sh
-[ "$(nvm current)" = "$(node -v)" ] || die "Failed to find current version"
+
+nvm deactivate 2>&1
+
+[ "$(nvm current)" = "system" ] || [ "$(nvm current)" = "none" ] || die '"nvm current" did not report "system" or "none" when deactivated'
+
diff --git "a/test/fast/Running \"nvm use system\" should work as expected" "b/test/fast/Running \"nvm use system\" should work as expected"
new file mode 100755
index 0000000..9b4e850
--- /dev/null
+++ "b/test/fast/Running \"nvm use system\" should work as expected"
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+die () { echo $@ ; exit 1; }
+
+. ../../nvm.sh
+
+nvm_has_system_node() { return 0; }
+[ "$(nvm use system 2>&1 | tail -n1)" = "Now using system version of node: $(node -v)." ] || die "Could not use system version of node"
+
+nvm_has_system_node() { return 1; }
+[ "$(nvm use system 2>&1 | tail -n1)" = "System version of node not found." ] || die "Did not report error, system node not found"
+nvm use system 2>&1 > /dev/null || [ $? -eq 127 ] || die "Did not return error code, system node not found"
+
diff --git a/test/fast/Unit tests/nvm_tree_contains_path b/test/fast/Unit tests/nvm_tree_contains_path
new file mode 100755
index 0000000..0ddfb86
--- /dev/null
+++ b/test/fast/Unit tests/nvm_tree_contains_path
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+cleanup () {
+  rm tmp/node
+  rmdir tmp
+  rm tmp2/node
+  rmdir tmp2
+}
+die () { echo $@ ; cleanup; exit 1; }
+
+. ../../../nvm.sh
+
+mkdir -p tmp
+touch -p tmp/node
+mkdir -p tmp2
+touch -p tmp2/node
+
+nvm_tree_contains_path tmp tmp/node || die '"tmp" should contain "tmp/node"'
+
+nvm_tree_contains_path tmp tmp2/node && die '"tmp" should not contain "tmp2/node"'
+
+nvm_tree_contains_path tmp2 tmp2/node || die '"tmp2" should contain "tmp2/node"'
+
+nvm_tree_contains_path tmp2 tmp/node && die '"tmp2" should not contain "tmp/node"'
+
+cleanup
+
diff --git "a/test/slow/Running \"nvm current\" should display current nvm environment." "b/test/slow/Running \"nvm current\" should display current nvm environment."
new file mode 100755
index 0000000..de82ceb
--- /dev/null
+++ "b/test/slow/Running \"nvm current\" should display current nvm environment."
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+die () { echo $@ ; exit 1; }
+
+. ../../nvm.sh
+
+nvm install 0.10
+
+[ "$(nvm current)" = "$(node -v)" ] || die "Failed to find current version: got \"$(nvm current)\", expected \"$(node -v)\""
+
diff --git "a/test/slow/nvm exec/Running \"nvm exec 0.x\" should work" "b/test/slow/nvm exec/Running \"nvm exec 0.x\" should work"
new file mode 100755
index 0000000..7798d79
--- /dev/null
+++ "b/test/slow/nvm exec/Running \"nvm exec 0.x\" should work"
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+die () { echo $@ ; exit 1; }
+
+. ../../../nvm.sh
+
+nvm use 0.10
+NPM_VERSION_TEN="$(npm --version)"
+
+nvm use 0.11.7 && [ "$(node --version)" = "v0.11.7" ] || die "\`nvm use\` failed!"
+
+[ "$(nvm exec 0.10 npm --version | tail -1)" = "$NPM_VERSION_TEN" ] || die "`nvm exec` failed to run with the correct version"
+
diff --git "a/test/slow/nvm exec/Running \"nvm exec\" should pick up .nvmrc version" "b/test/slow/nvm exec/Running \"nvm exec\" should pick up .nvmrc version"
new file mode 100755
index 0000000..203cd9a
--- /dev/null
+++ "b/test/slow/nvm exec/Running \"nvm exec\" should pick up .nvmrc version"
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+die () { echo $@ ; exit 1; }
+
+. ../../../nvm.sh
+
+nvm use 0.10.7
+NPM_VERSION_TEN="$(npm --version)"
+
+nvm use 0.11.7 && [ "$(node --version)" = "v0.11.7" ] || die "\`nvm use\` failed!"
+
+echo "0.10.7" > .nvmrc
+
+[ "$(nvm exec npm --version | tail -1)" = "$NPM_VERSION_TEN" ] || die "\`nvm exec\` failed to run with the .nvmrc version"
+
+[ "$(nvm exec npm --version | head -1)" = "Found '$PWD/.nvmrc' with version <0.10.7>" ] || die "\`nvm exec\` failed to print out the \"found in .nvmrc\" message"
+
diff --git a/test/slow/nvm exec/setup_dir b/test/slow/nvm exec/setup_dir
new file mode 100755
index 0000000..a5fc4bc
--- /dev/null
+++ b/test/slow/nvm exec/setup_dir
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+. ../../../nvm.sh
+nvm install 0.10.7
+nvm install 0.11.7
+
+if [ -f ".nvmrc" ]; then
+  mv .nvmrc .nvmrc.bak
+fi
+
diff --git a/test/slow/nvm exec/teardown_dir b/test/slow/nvm exec/teardown_dir
new file mode 100755
index 0000000..a6b923c
--- /dev/null
+++ b/test/slow/nvm exec/teardown_dir
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+. ../../../nvm.sh
+nvm uninstall v0.10.7
+nvm uninstall v0.11.7
+
+rm .nvmrc
+
+if [ -f ".nvmrc.bak" ]; then
+  mv .nvmrc.bak .nvmrc
+fi
+
