Nice solution. Alternatively, you could have done: $ . ./cvsswitch two Notice the '. ' before the command, which executes the command in the current shell without starting a new one. Scott wrote: > Alex, > > The script itself is a shell session, so as soon as it ends, all > information contained within would be eliminated and not carried over to > your current environment. A solution is to functionalize the script, > like this: > > ---------------------------------------------------------- > cvsswitch() { > echo "Selected server : "$1; > > case "$1" in > one) > CVSROOT=":ext:alex@cvs.one.net > :/var/lib/cvs"; export CVSROOT; > ;; > two) > CVSROOT=":ext:alex@cvs.two.net > :/var/lib/cvs"; export CVSROOT; > ;; > *) > echo '???'; > exit 0; > esac > > echo "CVSROOT value at end of script : "$CVSROOT; > exit 0; > } > ---------------------------------------------------------- > > As you can see, the command name remains the same, and you would just > have to write the script *into* your ~/.bash_profile and source it and > it would then work within any environment instead of within its own. > Hope this helps. > > -Scott > > > Alex Dean wrote: > >> 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@cvs.one.net >> :/var/lib/cvs"; export CVSROOT; >> ;; >> two) >> CVSROOT=":ext:alex@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@cvs.one.net :/var/lib/cvs >> sod:~/scripts alex$ ./cvsswitch two >> Selected server : 'two' >> CVSROOT value at end of script : ':ext:alex@cvs.two.net >> :/var/lib/cvs' >> sod:~/scripts alex$ echo $CVSROOT >> :ext:alex@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 >> . >> >> >> -- -Eric 'shubes' "There is no such thing as the People; it is a collectivist myth. There are only individual citizens with individual wills and individual purposes." -William E. Simon (1927-2000), Secretary of the Treasury (1974-1977) "A Time For Truth" (1978), pg. 237 **************************************************** This message has been scanned using Contraxx Technology Group mail server v8.0.3 and is virus free. Message sent from Mail Server 3 **************************************************** --------------------------------------------------- PLUG-discuss mailing list - PLUG-discuss@lists.plug.phoenix.az.us To subscribe, unsubscribe, or to change you mail settings: http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss