In an email exchange with Chet Ramey, bash maintainer, on this topic, he
suggested that a simple way to deal solve the problem is by use of shell
functions.  Specifically, he directed me to:
/usr/share/doc/bash-2.05/functions/pathfuncs, which is part of the
standard bash distribution.  As it is so short, I include it here, as
follows:

---cut here--

#From: "Simon J. Gerraty" <[EMAIL PROTECTED]>
#Message-Id: <[EMAIL PROTECTED]>
#Subject: Re: a shell idea?
#Date: Mon, 09 Oct 1995 21:30:20 +1000


# NAME:
#       add_path.sh - add dir to path
#
# DESCRIPTION:
#       These functions originated in /etc/profile and ksh.kshrc, but
#       are more useful in a separate file.
#
# SEE ALSO:
#       /etc/profile
#
# AUTHOR:
#       Simon J. Gerraty <[EMAIL PROTECTED]>

#       @(#)Copyright (c) 1991 Simon J. Gerraty
#
#       This file is provided in the hope that it will
#       be of use.  There is absolutely NO WARRANTY.
#       Permission to copy, redistribute or otherwise
#       use this file is hereby granted provided that
#       the above copyright notice and this notice are
#       left intact.

# is $1 missing from $2 (or PATH) ?
no_path() {
        eval "case :\$${2-PATH}: in *:$1:*) return 1;; *) return 0;;
esac"
}
# if $1 exists and is not in path, append it
add_path () {
  [ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="\$${2:-PATH}:$1"
}
# if $1 exists and is not in path, prepend it
pre_path () {
  [ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="$1:\$${2:-PATH}"
}
# if $1 is in path, remove it
del_path () {
  no_path $* || eval ${2:-PATH}=`eval echo :'$'${2:-PATH}: |
    sed -e "s;:$1:;:;g" -e "s;^:;;" -e "s;:\$;;"`
}

-----cut here-----

If sourced in, say, bashrc, these functions would be available to
append or prepend a directory, without creating redundancies.

Thanks to Chet for pointing this out.

John

-- 
John P. Verel
Living Proof That Low Tech Beats High Tech!



_______________________________________________
Redhat-list mailing list
[EMAIL PROTECTED]
https://listman.redhat.com/mailman/listinfo/redhat-list

Reply via email to