일련의 명령을 받아 실행하는 도구를 작성하고 있습니다.Popen을 다른 쉘로 호출하는 방법?
명령은 터미널/콘솔에 입력 한 것처럼 작성해야합니다. 이를 위해 Popen()
을 shell=True
과 같이 사용하여 터미널/콘솔에 입력 한 사람의 행동을 모방했습니다.
이제 사용자가 좋아하는 명령 인터프리터를 지정할 수있게하고 싶습니다. 좀 더 정확하게 말하자면, Windows에서는 cmd.exe 대신 "Git bash"를 사용할 수 있습니다.
Popen()
's documentation에 따르면, 사용할 인터프리터의 선택은 환경 변수 COMSPEC
을 통해 수행됩니다.
C:\Program Files (x86)\Git\bin\bash.exe
에
COMSPEC
을 설정하려고했으나
base
이
-c
을 기대하면서 하위 프로세스는 명령에
/c
추가하기 때문에 그것은 실패합니다.
나는 shell=True
를 사용하지 않을 생각하지만 나는 차이점이 무엇인지 정확히 모르는 :
- 내가 인수에 명령 줄을
.split()
해야 하는가? 그렇다면 어떻게? shell=True
이 의미하는/설정하는 플래그가 있습니까?
여기서 목표는 Popen(shell=True)
안에있는 "마법"을 다시 구현하지 말고 가능한 한 최선을 모방하는 것입니다.
의견이 있으십니까?
'r ""'리터럴 또는 이스케이프 슬래시 (' "\ b"! = r "\ b"== "\\ b"')를 사용하십시오. – jfs
@ J.F.Sebastian 잘 했어, 고마워. 업데이트되었습니다. –