change environment variable via script

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
+ (text/plain)
Delete this message
Reply to this message
Author: Alex Dean
Date:  
To: discussion list Main
Subject: change environment variable via script
I'm using bash (on OSX). In ~/.bash_profile, I have a CVSROOT
variable set so I can connect to 1 CVS server. I occasionally want
to connect to another cvs server, so I wrote a shell script to set a
new CVSROOT value for me. The script appears to set the value
correctly, but it doesn't change my environment settings outside of
the script. It seems like it's a global vs. local variable issue.
(CVSROOT is set differently within the context of the script, but is
the change is forgotten when the script exits.) I don't do shell
scripts very often, so I'm probably missing something really
obvious. How do I tell the script I want to change the value 'for
real'?

This is the script :
#!/bin/sh
echo "Selected server : "$1;

case "$1" in
   one)
     CVSROOT=":ext::/var/lib/cvs"; export CVSROOT;
   ;;
   two)
     CVSROOT=":ext::/var/lib/cvs"; export CVSROOT;
   ;;
   *)
     echo '???';
     exit 0;
esac


echo "CVSROOT value at end of script : "$CVSROOT;
exit 0;

And here's a session which -should- switch from server 'one' to
server 'two', but it doesn't...

sod:~/scripts alex$ echo $CVSROOT
:ext::/var/lib/cvs
sod:~/scripts alex$ ./cvsswitch two
Selected server : 'two'
CVSROOT value at end of script : ':ext::/var/lib/cvs'
sod:~/scripts alex$ echo $CVSROOT
:ext::/var/lib/cvs
sod:~/scripts alex$

You can see the script set the variable correctly, but the change
didn't apply outside of the script. Why doesn't this work?!

thanks,
alex
.



---------------------------------------------------
PLUG-discuss mailing list -
To subscribe, unsubscribe, or to change you mail settings:
http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss