X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=.profile.d%2FPATH.bashrc;h=3113f75a54ddec55d0fff56c08de953c377c5ee8;hb=0d7023a2b67fadc9eb2805681c09b1eb7ea3f7a7;hp=20fbf9b3ded0bf58412acb5447cb0a7de6c1eb4d;hpb=508ebf773fb67e7970f4087fab4591399bc59edb;p=profile.git diff --git a/.profile.d/PATH.bashrc b/.profile.d/PATH.bashrc index 20fbf9b..3113f75 100644 --- a/.profile.d/PATH.bashrc +++ b/.profile.d/PATH.bashrc @@ -1,11 +1,9 @@ -# $Id$ -# # Path information is stored on separate lines in XXXdirs. # We extract each directory exists and add it to the appropriate PATH. # # Location of the XXXdirs files. -DIR=$HOME/.profile.d +DIR="$HOME/.profile.d" # Set one path to be the same as another. function copypath() { @@ -14,7 +12,7 @@ function copypath() { # Sanitise and export. path="$(eval echo \$$oldpath)" - [ -z "$path" ] || eval export $newpath="$path" + [ -z "$path" ] || eval "export $newpath='$path'" unset path newpath oldpath } @@ -27,21 +25,30 @@ function makepath() { # Check the file exists. [ -e "$DIR/$dirs" ] || return + # Set IFS to newline only so that we can read $(embedded shell commands). + JGD=$IFS + IFS=' +' # Read them. path= - for dir in $(cat "$DIR/$dirs"); do + while read dir; do + dir=$(eval echo "$dir") [ -d "$dir" ] || continue path="$path:$dir" - done + done < "$DIR/$dirs" unset dir + # Restore IFS. + IFS=$JGD + unset JGD + # Sanitise path. path=${path#:} [ -z "$path" ] && return # Export. - eval export $newpath="$path" + eval "export $newpath='$path'" unset path newpath dirs } @@ -50,7 +57,7 @@ makepath PATH bindirs makepath C_INCLUDE_PATH incdirs copypath CPLUS_INCLUDE_PATH C_INCLUDE_PATH makepath LD_LIBRARY_PATH libdirs -copypath LD_RUN_PATH LD_LIBRARY_PATH +copypath LD_RUN_PATH PATH makepath MANPATH mandirs makepath PKG_CONFIG_PATH pkgdirs