Vim 5 compatibility.
[profile.git] / .profile.d / PATH.bashrc
index 1a271aa..3113f75 100644 (file)
@@ -1,11 +1,9 @@
-# $Id$
-#
 # Path information is stored on separate lines in XXXdirs.
 # We extract each directory exists and add it to the appropriate PATH.
 #
 
 # Location of the XXXdirs files.
-DIR=$HOME/.profile.d
+DIR="$HOME/.profile.d"
 
 # Set one path to be the same as another.
 function copypath() {
@@ -14,7 +12,7 @@ function copypath() {
 
   # Sanitise and export.
   path="$(eval echo \$$oldpath)"
-  [ -z "$path" ] || eval export $newpath="$path"
+  [ -z "$path" ] || eval "export $newpath='$path'"
 
   unset path newpath oldpath
 }
@@ -27,22 +25,30 @@ function makepath() {
   # Check the file exists.
   [ -e "$DIR/$dirs" ] || return
 
+  # Set IFS to newline only so that we can read $(embedded shell commands).
+  JGD=$IFS
+  IFS='
+'
   # Read them.
   path=
-  for dir in $(cat "$DIR/$dirs"); do
+  while read dir; do
     dir=$(eval echo "$dir")
     [ -d "$dir" ] || continue
 
     path="$path:$dir"
-  done
+  done < "$DIR/$dirs"
   unset dir
 
+  # Restore IFS.
+  IFS=$JGD
+  unset JGD
+
   # Sanitise path.
   path=${path#:}
   [ -z "$path" ] && return
 
   # Export.
-  eval export $newpath="$path"
+  eval "export $newpath='$path'"
 
   unset path newpath dirs
 }