#!/bin/bash path_remove () { local IFS=':' local NEWPATH local DIR local PATHVARIABLE=${2:-PATH} for DIR in ${!PATHVARIABLE} ; do if [ "$DIR" != "$1" ] ; then NEWPATH=${NEWPATH:+$NEWPATH:}$DIR fi done export $PATHVARIABLE="$NEWPATH" } path_prepend () { path_remove $1 $2 if ([[ -d "$1" ]] || [[ ! $1 = /* ]]); then local PATHVARIABLE=${2:-PATH} export $PATHVARIABLE="$1${!PATHVARIABLE:+:${!PATHVARIABLE}}" fi } path_append () { path_remove $1 $2 if ([[ -d "$1" ]] || [[ ! $1 = /* ]]); then local PATHVARIABLE=${2:-PATH} export $PATHVARIABLE="${!PATHVARIABLE:+${!PATHVARIABLE}:}$1" fi } path_insert () { if ([[ -d "$1" ]] || [[ ! $1 = /* ]]); then local PATHVAR=${4:-PATH} local temp echo inserting $1 into ${!PATHVAR} $2 $3 boa=$([[ $2 == b* ]] && echo "$1:&" || echo "&:$1:") temp="$(echo ${!PATHVAR} | sed -r "s#$3(:)?#$boa#" | sed 's#^:##' | sed 's#\:$##' | sed 's#::#:#g' )" echo result: $temp export PATHVAR=$temp fi } # path_insert_before () { # _path_insert b "$@" # } # # path_insert_after () { # _path_insert a "$@" # }