Separating variable declaration from first assignment, which should fix some ksh problems.
diff --git a/nvm.sh b/nvm.sh
index eac2e09..b54ce38 100644
--- a/nvm.sh
+++ b/nvm.sh
@@ -46,7 +46,8 @@
 
 
 nvm_find_nvmrc() {
-  local dir="$(nvm_find_up '.nvmrc')"
+  local dir
+  dir="$(nvm_find_up '.nvmrc')"
   if [ -e "$dir/.nvmrc" ]; then
     echo "$dir/.nvmrc"
   fi
@@ -54,7 +55,8 @@
 
 # Obtain nvm version from rc file
 nvm_rc_version() {
-  local NVMRC_PATH="$(nvm_find_nvmrc)"
+  local NVMRC_PATH
+  NVMRC_PATH="$(nvm_find_nvmrc)"
   if [ -e "$NVMRC_PATH" ]; then
     NVM_RC_VERSION=`cat "$NVMRC_PATH" | head -n 1`
     echo "Found '$NVMRC_PATH' with version <$NVM_RC_VERSION>"
@@ -63,7 +65,8 @@
 
 # Expand a version using the version cache
 nvm_version() {
-  local PATTERN=$1
+  local PATTERN
+  PATTERN=$1
   local VERSION
   # The default version is the current one
   if [ -z "$PATTERN" ]; then
@@ -79,7 +82,8 @@
 }
 
 nvm_remote_version() {
-  local PATTERN=$1
+  local PATTERN
+  PATTERN=$1
   local VERSION
   VERSION=`nvm_ls_remote $PATTERN | tail -n1`
   echo "$VERSION"
@@ -111,14 +115,18 @@
 
 nvm_binary_available() {
   # binaries started with node 0.8.6
-  local MINIMAL="0.8.6"
-  local VERSION=$1
+  local MINIMAL
+  MINIMAL="0.8.6"
+  local VERSION
+  VERSION=$1
   [ $(nvm_normalize_version $VERSION) -ge $(nvm_normalize_version $MINIMAL) ]
 }
 
 nvm_ls() {
-  local PATTERN=$1
-  local VERSIONS=''
+  local PATTERN
+  PATTERN=$1
+  local VERSIONS
+  VERSIONS=''
   if [ "$PATTERN" = 'current' ]; then
     echo `node -v 2>/dev/null`
     return
@@ -146,9 +154,11 @@
 }
 
 nvm_ls_remote() {
-  local PATTERN=$1
+  local PATTERN
+  PATTERN=$1
   local VERSIONS
-  local GREP_OPTIONS=''
+  local GREP_OPTIONS
+  GREP_OPTIONS=''
   if [ -n "$PATTERN" ]; then
     PATTERN=`nvm_format_version "$PATTERN"`
   else
@@ -189,9 +199,10 @@
 nvm_print_versions() {
   local VERSION
   local FORMAT
-  local CURRENT=`nvm_version current`
+  local NVM_CURRENT
+  NVM_CURRENT=`nvm_version current`
   echo "$1" | while read VERSION; do
-    if [ "$VERSION" = "$CURRENT" ]; then
+    if [ "$VERSION" = "$NVM_CURRENT" ]; then
       FORMAT='\033[0;32m-> %9s\033[0m'
     elif [ -d "$NVM_DIR/$VERSION" ]; then
       FORMAT='\033[0;34m%12s\033[0m'
@@ -209,10 +220,13 @@
   fi
 
   # Try to figure out the os and arch for binary fetching
-  local uname="$(uname -a)"
-  local os=
-  local arch="$(uname -m)"
-  local GREP_OPTIONS=''
+  local uname
+  uname="$(uname -a)"
+  local os
+  local arch
+  arch="$(uname -m)"
+  local GREP_OPTIONS
+  GREP_OPTIONS=''
   case "$uname" in
     Linux\ *) os=linux ;;
     Darwin\ *) os=darwin ;;
@@ -272,7 +286,8 @@
       local sum
       local tarball
       local nobinary
-      local version_not_provided=0
+      local version_not_provided
+      version_not_provided=0
       local provided_version
 
       if ! nvm_has "curl"; then
@@ -340,8 +355,10 @@
             t="$VERSION-$os-$arch"
             url="$NVM_NODEJS_ORG_MIRROR/$VERSION/node-${t}.tar.gz"
             sum=`curl -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt | \grep node-${t}.tar.gz | awk '{print $1}'`
-            local tmpdir="$NVM_DIR/bin/node-${t}"
-            local tmptarball="$tmpdir/node-${t}.tar.gz"
+            local tmpdir
+            tmpdir="$NVM_DIR/bin/node-${t}"
+            local tmptarball
+            tmptarball="$tmpdir/node-${t}.tar.gz"
             if (
               mkdir -p "$tmpdir" && \
               curl -L -C - --progress-bar $url -o "$tmptarball" && \
@@ -370,8 +387,10 @@
         make='gmake'
         MAKE_CXX="CXX=c++"
       fi
-      local tmpdir="$NVM_DIR/src"
-      local tmptarball="$tmpdir/node-$VERSION.tar.gz"
+      local tmpdir
+      tmpdir="$NVM_DIR/src"
+      local tmptarball
+      tmptarball="$tmpdir/node-$VERSION.tar.gz"
       if [ "`curl -Is "$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz" | \grep '200 OK'`" != '' ]; then
         tarball="$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz"
         sum=`curl -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt | \grep node-$VERSION.tar.gz | awk '{print $1}'`
@@ -511,7 +530,8 @@
     ;;
     "run" )
       local provided_version
-      local has_checked_nvmrc=0
+      local has_checked_nvmrc
+      has_checked_nvmrc=0
       # run given version of node
       shift
       if [ $# -lt 1 ]; then
@@ -611,8 +631,10 @@
         return 127
       fi
       VERSION=`nvm_version $2`
-      local ROOT=`(nvm use $VERSION && npm -g root)`
-      local ROOTDEPTH=$((`echo $ROOT | sed 's/[^\/]//g'|wc -m` -1))
+      local ROOT
+      ROOT=`(nvm use $VERSION && npm -g root)`
+      local ROOTDEPTH
+      ROOTDEPTH=$((`echo $ROOT | sed 's/[^\/]//g'|wc -m` -1))
 
       # declare local INSTALLS first, otherwise it doesn't work in zsh
       local INSTALLS