cmd.exe launched from another cmd.exe

0

I'm doing a script that I start with bash.exe from Cygwin on Windows:

C:\bash.exe my_script.sh

It changes my Python Virtual Env depending of some conditions. For those who know Virtualenv, I need to use "workon.bat" and the only way I know to execute a batch script is the following one:

...
cmd /K "workon.bat" "$required_venv"
...

It works but I'm now in a new cmd.exe instance launched from the previous one. Proof : Typing exit bring me back to it :

C:\bash.exe my_script.sh  *ENTER*
(venv) C:\
(venv) C:\exit            *ENTER*
C:\

In fact, each time I will launch that script I will be in a new instance :

cmd.exe
    cmd.exe
        cmd.exe
           cmd.exe
               ...

How to solve that annoying recursive situation ? One solution could be to detect that I'm in a cmd launched into another one and exit. I would be ideal to execute the batch workon.bat while remaining inside the cmd.

snoob dogg

Posted 2018-11-17T18:24:26.253

Reputation: 103

Answers

1

Instead of

cmd /K "workon.bat" "$required_venv"

Use

cmd /C "workon.bat" "$required_venv"

As it will close the new shell after running the batch file, from cmd /?

/c  Carries out the command specified by String and then stops.
/k  Carries out the command specified by String and continues.

matzeri

Posted 2018-11-17T18:24:26.253

Reputation: 1 662

This doens't work unfortunatly because if it close the new shell, it close also the the virtual venv, right ? : ( – snoob dogg – 2018-11-17T19:34:43.080

using /c doesn't keep the virtualenv :/ – snoob dogg – 2018-11-18T08:46:49.047

0

@matzeri is wrong about cmd /C as it will also close the virtualenv which is unexpected. I think that doing that job on Windows using Cygwin, Bash and script-shell was a bad idea, I ended up by doing a batch file instead.

snoob dogg

Posted 2018-11-17T18:24:26.253

Reputation: 103