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