有没有一种方法可以用bash而不是cmd进行编译?

时间:2019-12-22 17:39:01

标签: python linux windows bash

我正在运行Windows 10,并且正在看着有人在运行Linux。

他正在教授subprocess模块,并演示如何通过终端(在Linux中)调用命令。

我的问题是Linux的命令与Windows中的命令不同,例如对于ifconfig,您需要在Windows中调用ipconfig /all

所以我去了Microsoft Store,下载了一个名为Kali Linux的产品。

我的问题是如何在Visual Studio中使用bash代替cmd?

示例:

import subprocess

# Linux command
subprocess.call('ifconfig', shell=True)

# Windows command
subprocess.call('ipconfig /all', shell=True)

Python终端或cmd无法识别ifconfig命令。

1 个答案:

答案 0 :(得分:0)

我假设您安装了Windows Linux子系统(WSL)。使用WSL,您可以在Windows的cmd中执行bash。您只需使用其bash选项将要在bash中执行的命令传递给-c命令:

subprocess.call('bash -c ifconfig', shell=True)

请注意,整个命令必须作为单个参数传递给bash。也就是说,如果要执行ls -l,则必须使用bash -c "ls -l"

如果要对多个subprocess.call执行多个命令,则必须在每个调用中使用bash -c或更改默认外壳程序(请参见python's manual):

  

在具有shell=True的Windows上,COMSPEC环境变量指定默认的shell。

cmd命令where bash揭示了您必须在COMPSPEC中指定的路径才能将默认外壳程序更改为bash。在我的Windows 10系统上,它是C:\Windows\System32\bash.exe