a7d44205bae2f8480e61479bf08141aaca185d02
[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     [ -d "$dir" ] || continue
34
35     path="$path:$dir"
36   done
37
38   # Sanitise path.
39   path=${path#:}
40   [ -z "$path" ] && return
41
42   # Export.
43   eval export $newpath="$path"
44
45   unset path newpath dirs
46 }
47
48 makepath PATH bindirs
49 makepath C_INCLUDE_PATH incdirs
50 copypath CPLUS_INCLUDE_PATH C_INCLUDE_PATH
51 makepath LD_LIBRARY_PATH libdirs
52 copypath LD_RUN_PATH LD_LIBRARY_PATH
53 makepath MANPATH mandirs
54 makepath PKG_CONFIG_PATH pkgdirs
55
56 unset sedscr makepath copypath