一連のコマンドを受け取って実行するツールを作成しています。
コマンドは、ターミナル/コンソールで入力されたかのように記述されます。そのために、端末/コンソールで誰かが入力する動作を模倣するために soを使用Popen()しました。shell=True
ここで、ユーザーが好きなコマンド インタープリターを指定できるようにしたいと思います。より正確には、Windows では、cmd.exe の代わりに「Git bash」を使用することを決定できます。
Popen()のドキュメントによると、使用するインタープリターの選択は環境変数によって行われますCOMSPEC。
呼び出しの前にに設定しようとしましCOMSPECたが、期待どおりにサブプロセスがコマンドにC:\Program Files (x86)\Git\bin\bash.exe追加されるため、失敗します。/cbase-c
使用しないことを考えshell=Trueましたが、違いが何であるか正確にはわかりません:
.split()コマンドラインを引数にする必要がありますか? もしそうなら、どのように?shell=True/ setを意味するフラグはありますか?
ここでの目標は、Popen(shell=True)可能な限り模倣しながら、内部の「魔法」を再実装しないことです。
何かご意見は ?