change environment variable via script

Alex Dean alex at crackpot.org
Fri Dec 23 08:54:45 MST 2005


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:alex at cvs.one.net:/var/lib/cvs"; export CVSROOT;
   ;;
   two)
     CVSROOT=":ext:alex at cvs.two.net:/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:alex at cvs.one.net:/var/lib/cvs
sod:~/scripts alex$ ./cvsswitch two
Selected server : 'two'
CVSROOT value at end of script : ':ext:alex at cvs.two.net:/var/lib/cvs'
sod:~/scripts alex$ echo $CVSROOT
:ext:alex at cvs.one.net:/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
.



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.plug.phoenix.az.us/pipermail/plug-discuss/attachments/20051223/feeaeb74/attachment.htm


More information about the PLUG-discuss mailing list