Robię skrypt, który zaczynam bash.exe
od Cygwin w systemie Windows:
C:\bash.exe my_script.sh
Zmienia moje wirtualne środowisko Python w zależności od niektórych warunków. Dla tych, którzy znają Virtualenv, muszę użyć „workon.bat”, a jedynym sposobem na wykonanie skryptu wsadowego jest następujący:
...
cmd /K "workon.bat" "$required_venv"
...
Działa, ale teraz jestem w nowej cmd.exe
instancji uruchomionej z poprzedniej. Dowód: pisanie exit
sprowadza mnie z powrotem do tego:
C:\bash.exe my_script.sh *ENTER*
(venv) C:\
(venv) C:\exit *ENTER*
C:\
W rzeczywistości za każdym razem, gdy uruchomię ten skrypt, będę w nowej instancji:
cmd.exe
cmd.exe
cmd.exe
cmd.exe
...
Jak rozwiązać tę irytującą sytuację rekurencyjną? Jednym z rozwiązań może być wykrycie, że jestem w cmd uruchomionym na innym i wyjście. Byłbym idealny do wykonania wsadowego workon.bat pozostając wewnątrz cmd.
@matzeri się myli,
cmd /C
ponieważ zamknie także virtualenv, co jest nieoczekiwane. Myślę, że wykonanie tej pracy w systemie Windows przy użyciu Cygwin, Bash i powłoki skryptowej było złym pomysłem, zamiast tego zrobiłem plik wsadowy.źródło