#!/bin/bash # no bashisms so it can be used in debian profile run by dash # --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 ifexists start loop ifexists=false start=false 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 IFS=: for y in $PATH; do [ "$x" = "$y" ] && found=true done unset IFS if ! $found; then if ! $ifexists || [ -d "$x" ]; then if [ ! "$PATH" ]; then PATH="$x" elif $start; then PATH="$x:$PATH" else PATH="$PATH:$x" fi fi fi done }