[Discuss] What the use of .bashrc

John Abreau abreauj at gmail.com
Tue Oct 30 11:29:48 EDT 2012


Interesting. I had written my own, ages ago, but I made them two
separate functions. Also, they work not only for PATH, but for
any similar environment variable such as MANPATH, CLASSPATH, etc.

I never made them check for a pre-existing instance, though; they were
simple one-liners. Thanks for the tip; I'm updating them to do that.

Usage:

    prepend-path PATH /path/to/bin
    append-path PATH /path/to/bin

prepend-path() {
        case "$1" in
        *:"$1":*)
                ;;
        *)
                eval "$1=$2:\$$1" ;;
        esac
}

append-path() {
        case "$1" in
        *:"$1":*)
                ;;
        *)
          	eval "$1=\$$1:$2" ;;
        esac
}


On Tue, Oct 30, 2012 at 10:36 AM, Jerry Feldman <gaf at blu.org> wrote:
> On 10/30/2012 10:13 AM, Rich Pieri wrote:
>> On Tue, 30 Oct 2012 07:50:48 -0400
>> Glenn Hoffman <glennhoffman at mac.com> wrote:
>>> existence of .bashrc, since I have never used it myself. What's the
>>> reason for a separate startup file for a non-login interactive shell?
>> As a matter of principle, an interactive session should have one and
>> only one login process associated with it. That's the login shell,
>> whether it's BASH or something else.
>>
>> As a matter of practice, logging in on the console is a little
>> different from starting a screen session. Having separate login and
>> non-login run command files makes this easy keep sane. This is just one
>> practical example among many.
>>
> Agreed. In the case of a Gnome or KDE session, it is the session that is
> effectively the login shell. but neither gnome nor kde parse ~/.profile.
> They generally use xinitrc.
> The bottom line is it is, IMHO, best to set your path, environment
> variables and  aliases ~/.bashrc. There is a very nice function in
> /etc/bashrccalled pathmung() that allows you to add path variables to
> your path either at the beginning or end but without duplicating anything:
> pathmunge () {
>     case ":${PATH}:" in
>         *:"$1":*)
>             ;;
>         *)
>             if [ "$2" = "after" ] ; then
>                 PATH=$PATH:$1
>             else
>                 PATH=$1:$PATH
>             fi
>     esac
> }
>
> If you read the function, it first tests to make sure your element is
> not already in $PATH. In the default case '*)' it looks if you have
> specified, 'after', and if so, it appends the element to your path,
> otherwise it prepends.
>
>
>
> --
> Jerry Feldman <gaf at blu.org>
> Boston Linux and Unix
> PGP key id:3BC1EB90
> PGP Key fingerprint: 49E2 C52A FC5A A31F 8D66  C0AF 7CEA 30FC 3BC1 EB90
>
>
>
> _______________________________________________
> Discuss mailing list
> Discuss at blu.org
> http://lists.blu.org/mailman/listinfo/discuss
>



-- 
John Abreau / Executive Director, Boston Linux & Unix
PGP KeyID: 32A492D8 / Email: abreauj at gmail.com
PGP FP: 7834 AEC2 EFA3 565C A4B6  9BA4 0ACB AD85 32A4 92D8



More information about the Discuss mailing list