pushenv() { # Path separator: a colon in Unix-like environments, a semi- # colon in Windows environments. SEP=":" maybe() { name=$1 part=$(readlink -m $2) value=$3 if ! [[ -d $part ]]; then # $part does not exist or is not a directory true elif [[ -z $value ]]; then echo "export $name=$part" export $name=$part elif ! [[ $value == "$part" || $value == "$part$SEP"* || $value == *"$SEP$part$SEP"* || $value == *"$SEP$part" ]] then echo "export $name=$part$SEP$value" export $name=$part$SEP$value fi } for dir in "$@" do maybe PATH "$dir/bin" "$PATH" maybe CPATH "$dir/include" "$CPATH" maybe LD_LIBRARY_PATH "$dir/lib" "$LD_LIBRARY_PATH" maybe LIBRARY_PATH "$dir/lib" "$LIBRARY_PATH" maybe PKG_CONFIG_PATH "$dir/lib/pkgconfig" "$PKG_CONFIG_PATH" done }