_bash_profile_addpath() calling syntax is now in getopts style
authorshort <>
Sun, 23 Jun 2002 17:42:18 +0000 (17:42 +0000)
committershort <>
Sun, 23 Jun 2002 17:42:18 +0000 (17:42 +0000)
_bash_profile_addpath(): +force directory even if !exists (-f)
CVSROOT: +default path is "short@vellum.cz:/home/short/pserver/cvs"
+ensure "$HOME/lib/perl5"
  - otherwise CPAN will install to "$HOME/lib/site_perl" etc.

.bashrc

diff --git a/.bashrc b/.bashrc
index 12b2b86..6f7a9c9 100644 (file)
--- a/.bashrc
+++ b/.bashrc
@@ -3,26 +3,40 @@ if [ -z "$_home_short_dotbashrc" ];then
 
 if [ -f /etc/bashrc ];then source /etc/bashrc;fi
 
-function _bash_profile_addpath # variable,dirpathname
+function _bash_profile_addpath # <variablename>,<dirpathname>
 {
-       if [ '!' -d "$2" ];then return;fi
-       if [ -n "$3" -o -z "`eval "echo \\${$1}"`" ];then
-               eval "$1='$2'"
+       _OPTIND="$OPTIND"
+       _opt_f=0;_opt_s=0
+       OPTIND=1;while getopts fs got;do
+               case "$got" in
+                       [fs]) eval "_opt_$got=1" ;;
+                       *) exit 1 ;;
+                       esac
+               done
+       eval "_varname=\"\$$[$OPTIND+0]\""
+       eval "_dirpathname=\"\$$[$OPTIND+1]\""
+       if [ $_opt_f = 0 -a '!' -d "$_dirpathname" ];then return;fi
+       if [ $_opt_s = 1 -o -z "`eval "echo \\${$_varname}"`" ];then
+               eval "$_varname='$_dirpathname'"
        else
                # we want to override any original directories, place dirpathname first!
-               eval "$1=\"$2:\${$1}\""
+               eval "$_varname=\"$_dirpathname:\${$_varname}\""
        fi
-       export "$1"
+       export "$_varname"
+       unset _varname _dirpathname _opt_f _opt_s
+       OPTIND="$_OPTIND";unset _OPTIND
 }
 
-_bash_profile_addpath PATH            "$HOME/bin"
-_bash_profile_addpath PATH            "$HOME/sbin"
-_bash_profile_addpath LD_LIBRARY_PATH "$HOME/lib"
-_bash_profile_addpath MANPATH         "$HOME/man"
+_bash_profile_addpath -f PATH            "$HOME/bin"
+_bash_profile_addpath -f PATH            "$HOME/sbin"
+_bash_profile_addpath -f LD_LIBRARY_PATH "$HOME/lib"
+_bash_profile_addpath -f MANPATH         "$HOME/man"
 
-_bash_profile_addpath CVSROOT         "$HOME/cvs" single
-_bash_profile_addpath CVSROOT         "$HOME/pserver/cvs" single
+_bash_profile_addpath -f -s CVSROOT "short@vellum.cz:/home/short/pserver/cvs"  # default
+_bash_profile_addpath    -s CVSROOT "$HOME/pserver/cvs"
+_bash_profile_addpath    -s CVSROOT "$HOME/cvs"
 
+mkdir -p $HOME/lib/perl5       # otherwise CPAN will install to "$HOME/lib/site_perl" etc.
 for _perldir in $(eval "echo $HOME/lib/perl5{,/site_perl}$(
        for perlvar in version archname;do
                echo -n '{,/'
@@ -30,7 +44,7 @@ for _perldir in $(eval "echo $HOME/lib/perl5{,/site_perl}$(
                echo -n '}'
                done
        )");do
-       _bash_profile_addpath PERLLIB "$_perldir"
+       _bash_profile_addpath -f PERLLIB "$_perldir"
        done
 unset _perldir