Control-P T for title.
[profile.git] / .profile.d / PATH.bashrc
1 # $Id$
2 #
3 # Path information is stored on separate lines in XXXdirs.
4 # We extract each directory exists and add it to the appropriate PATH.
5 #
6
7 # Location of the XXXdirs files.
8 DIR=$HOME/.profile.d
9
10 # Set one path to be the same as another.
11 function copypath() {
12   newpath="$1"; shift
13   oldpath="$1"; shift
14
15   # Sanitise and export.
16   path="$(eval echo \$$oldpath)"
17   [ -z "$path" ] || eval export $newpath="$path"
18
19   unset path newpath oldpath
20 }
21
22 # Set a path from directories.
23 function makepath() {
24   newpath="$1"; shift
25   dirs="$1"; shift
26
27   # Check the file exists.
28   [ -e "$DIR/$dirs" ] || return
29
30   # Read them.
31   path=
32   for dir in $(cat "$DIR/$dirs"); do
33     dir=$(eval echo "$dir")
34     [ -d "$dir" ] || continue
35
36     path="$path:$dir"
37   done
38   unset dir
39
40   # Sanitise path.
41   path=${path#:}
42   [ -z "$path" ] && return
43
44   # Export.
45   eval export $newpath="$path"
46
47   unset path newpath dirs
48 }
49
50 makepath PATH bindirs
51 makepath C_INCLUDE_PATH incdirs
52 copypath CPLUS_INCLUDE_PATH C_INCLUDE_PATH
53 makepath LD_LIBRARY_PATH libdirs
54 copypath LD_RUN_PATH PATH
55 makepath MANPATH mandirs
56 makepath PKG_CONFIG_PATH pkgdirs
57
58 unset dirs copypath makepath newpath