[ -z "$path" ] || eval "export $newpath='$path'"
}
+# Try to expand variables in a path definition, discarding it if expansion fails.
+function expandpath() {
+ local path="$1"; shift
+
+ while [ -n "$path" ]; do
+ [ "${path/\$/}" = "$path" ] && return 0
+ path="${path#*\$}"
+
+ local var="${path%%/*}"
+ eval "[ -n \"\$$var\" ] || return 1"
+ done
+
+ return 0
+}
+
# Helper.
function addpath() {
local path="$1"; shift
local dir="$1"; shift
- dir=$(eval echo "$dir")
- if [ -d "$dir" ]; then
- echo "$path:$dir"
- else
+ if ! expandpath "$dir"; then
echo "$path"
+ else
+ dir=$(eval echo "$dir")
+ if [ -d "$dir" ]; then
+ echo "$path:$dir"
+ else
+ echo "$path"
+ fi
fi
}
done
-unset DIR PATHS dir dirs path var source sanitisepath copypath makepath newpath addpath
+unset DIR PATHS dir dirs path var source expandpath sanitisepath copypath makepath newpath addpath