# --start adds to start of path, which will give it highest priority
# --ifexists will add to path only if the directory exists
path_add() {
- local found x y z
- local ifexists start
+ local found x y z ifexists start loop
ifexists=false
start=false
- while [ "$1" = --* ]; do
- if [ "$1" = --start ]; then
- start=true
- elif [ "$1" = --ifexists ]; then
- ifexists=true
- fi
- shift
+ loop=true
+ # portable substring matching is ugly http://mywiki.wooledge.org/BashFAQ/041
+ while $loop; do
+ case $1 in
+ --*)
+ if [ "$1" = --start ]; then
+ start=true
+ elif [ "$1" = --ifexists ]; then
+ ifexists=true
+ fi
+ shift
+ ;;
+ *)
+ loop=false
+ ;;
+ esac
done
for x in "$@"; do
found=false
done
unset IFS
if ! $found; then
- if ! $ifexists || [ -d $x ]; then
+ if ! $ifexists || [ -d "$x" ]; then
if [ ! "$PATH" ]; then
PATH="$x"
elif $start; then