Rereading .bash_profile

Lew Bloch conrad at lewscanon.com
Mon Oct 25 21:36:29 UTC 2004


"Robert P. J. Day" wisely reminded us:
> a classic example is to append some entries to your search path:
> 
>   PATH=$PATH:blah:woof:.....
> 
> rerunning .bash_profile means that those entries will be appended
> *again*.  not fatal, of course, but i think too many people very
> cavalierly re-source that file without making sure there are no
> adverse consequences.

With care you can ensure that your .bash_profile actions are idempotent 
- they leave the same result state as the first time every time.

For example:

     if [ "${PATH/\/blah\/bin/}" = "${PATH}" ]
     then
	PATH=${PATH}:/blah/bin
     fi

which might leave /blah/bin in the PATH at some position not the end, or

     PATH=${PATH//\/blah\/bin/}
     PATH=${PATH//::/:}:/blah/bin

which guarantees the location of /blah/bin at the end of the PATH.

Most apps need a .+_HOME variable, so the above will become:

     export BLAH_HOME=/usr/local/blah
     PATH=${PATH//${BLAH_HOME}\/bin/}
     PATH=${PATH//::/:}:${BLAH_HOME}/bin




More information about the users mailing list