Shawn,
Yes you are write about the extra shells. In Fact everytime you type cmd you open a new shell but unfortunately the parent shell variables does not transfered to the child shell (snif snif). An other bad thing is that you can't push a process to background and stay to the same shell like at unix with "program &" because of IPC (Interprocess Comunication) win32 limitations (no the start /b does not do the job).
PS1 I found a workaround.
ps2 This discussion can go much further but I am afraid is out of topic!