【问题标题】:Is there a way I can compile with bash instead of cmd?有没有办法可以用 bash 而不是 cmd 编译?
【发布时间】:2019-12-22 17:39:01
【问题描述】:

我正在运行 Windows 10,并且正在观察正在运行 Linux 的人。

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

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

于是我去微软商店下载了一款名为 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 命令。

【问题讨论】:

  • 你考虑过Cygwin吗?
  • @PM77-1 嘿,这不是我要找的。我想用 bash 而不是 cmd 编译我的 Python 程序。所以ifconfig 命令会正确执行,bash 会识别它。
  • 最简单的方法:先安装windows包管理器Chocolatey(chocolatey.org/install)再安装cygwin(chocolatey.org/packages/Cygwin)
  • @PM77-1 and Lonely:与 WSL 相比,Cygwin 有什么优势吗?我不明白为什么在 Windows 直接内置 WSL 的情况下仍然经常推荐 Cygwin。

标签: python linux windows bash


【解决方案1】:

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

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

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

如果您想使用多个subprocess.call 执行多个命令,那么您必须在每次调用中使用bash -c 或更改默认shell(请参阅python's manual):

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

cmd 命令where bash 显示您必须在COMPSPEC 中指定的路径,以将默认shell 更改为bash。在我的 Windows 10 系统上,它是 C:\Windows\System32\bash.exe

【讨论】:

    猜你喜欢
    • 2023-02-13
    • 2012-01-13
    • 2012-02-04
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    相关资源
    最近更新 更多