有没有办法在Windows上运行Bash脚本?

Tow*_*wer 93 windows bash

我已经购买并使用Windows 7 Ultimate,我喜欢用它来开发应用程序.其中一个缺点(与每个操作系统一样)是我无法运行Bash脚本.有没有办法通过安装某些软件在Windows上运行Bash脚本?如果它不能100%工作就没关系,但只要最常用的功能可用就应该很棒.

Gus*_*uss 74

安装Cygwin,其中包括许多其他GNU和Unix实用程序中的Bash(没有他们,bash将不太可能非常有用).

另一个选择是MinGW的MSYS,其中包括bash和一些较重要的实用程序,如awk.我个人更喜欢Cygwin,因为它包含了Perl和Python这样的重型工具,我发现我不能没有这些工具,而MSYS对这些工具不以为然并假设您将自己安装它们.

更新:如果有人对此答案感兴趣并且正在运行MS-Windows 10,请注意MS-Windows 10具有" 适用于Linux的Windows子系统 "功能 - 一旦启用 - 允许您安装Ubuntu的用户模式映像和然后运行Bash.这提供了与Ubuntu的100%兼容性,用于调试和运行Bash脚本,但此设置完全独立于Windows,您不能使用Bash脚本与Windows功能(例如进程和API)进行交互,除了通过DrvFS功能对文件的有限访问权限.

  • 有关详细信息,请参阅[适用于Linux的Windows子系统(WSL)文档](https://docs.microsoft.com/en-us/windows/wsl/about). (2认同)
  • 不推荐使用,它只是购买更便宜的 Windows“*S*mall 版”时无法获得的功能之一。它也不适用于家庭版 IIRC。 (2认同)

Spe*_*bun 25

如果您正在寻找更原生的东西,可以使用getGnuWin32来安装所有已移植的unix命令行工具.加上winBash可以为您提供大部分工作的unix环境.为更好的终端模拟器添加console2,你几乎无法告诉你的窗口!

Cygwin总体上是一个更好的工具包,但我发现自己遇到了惊喜问题,因为它与windows之间存在分歧.这些解决方案都不如原生linux系统那么好.

您可能希望使用virtualbox来创建具有您选择的发行版的Linux VM.将其设置为与主机操作系统共享文件夹,您可以使用真正的Linux开发环境,并与Windows共享.只要注意那些EOL标记,它们每次都会得到.


Gar*_*ain 19

我能找到的最佳选择是Git Windows只需安装它然后右键单击并点击"Git Bash Here"这将打开一个bash窗口在此输入图像描述

这将打开一个像这样的bash窗口: 在此输入图像描述

和linux命令工作......

我试过'sh','vi','ssh','curl'等等......命令

  • 如果只需要它的外壳,那么您也可以安装MinGW而不会让Git显得多余。 (2认同)

Mic*_*sin 10

您始终可以安装Cygwin在Windows下运行Unix shell.我在Window XP中广泛使用了Cygwin.


Sim*_*one 9

安装git-extentions(https://code.google.com/p/gitextensions/)后,您可以从命令提示符运行.sh文件.(需要./script.sh,只需像bat/cmd文件一样运行)或者你可以使用MinGW Git bash shell在"完整"bash环境中运行它们.

我不是Cygwin的忠实粉丝(是的,我确信它真的很强大),所以在Windows上运行bash脚本而不必为我安装它.


Pau*_*515 9

最佳选择?Windows 10. Native Bash支持!

  • 不,不是最佳选择。您只是以这种方式运行 linux,而不是在 Windows 中运行 bash - 您无法从该 bash 启动 Windows 可执行文件(除非您使用 `cbwin` 来解决它……但这对于解决方法来说已经太麻烦了)。 (2认同)
  • 您可以运行虚拟的所有 bash 脚本 - 只要它们不尝试与主机操作系统 (Windows) 交互。WSL bash 是一个*轻量级虚拟化*子系统,可以执行*原始*ELF 二进制文件(即 Ubuntu) - 但您无法逃脱它! (2认同)

rub*_*ils 5

为了在本机运行,您可能需要使用 Cygwin(我在使用 Windows 时离不开它)。所以马上,Cygwin +1。其他任何事情都是不文明的。

然而,话虽如此,我最近开始使用实用程序的组合来轻松地将 Bash 脚本移植到 Windows,以便我的反 Linux 同事可以轻松运行复杂的任务,这些任务可以由 GNU 实用程序更好地处理。

通过在一个窗格中打开原始脚本并在另一个窗格中编写批处理文件,我通常可以在很短的时间内将 Bash 脚本移植到 Batch。我使用的工具如下:

与 GnuWin32 相比,我更喜欢 UnxUtils,因为 [如果我错了,请纠正我] GnuWin utils 通常必须安装,而 UnxUtils 是独立的二进制文件,可以开箱即用。

但是,CoreUtils 不包括一些熟悉的 *NIX 实用程序,例如 cURL,它也可用于 Windows (curl.haxx.se/download.html)。

我为项目创建了一个文件夹,并始终设置 PATH=。在 .bat 文件中,以便除了基本的 CMD shell 命令之外没有其他命令被引用(以及项目文件夹中的特定 UnxUtils 需要批处理脚本按预期运行)。

然后我将所需的 CoreUtils .exe 文件复制到项目文件夹中,并在 .bat 文件中引用它们,例如“.\curl.exe -s google.com”等。

Bat2Exe 程序是神奇发生的地方。批处理文件完成并成功测试后,启动 Bat2Exe.exe,并指定项目文件夹的路径。Bat2Exe 然后将创建一个包含该特定文件夹中所有文件的 Windows 二进制文件,并将使用它遇到的第一个 .bat 作为主可执行文件。您甚至可以包含一个 .ico 文件,用作生成的最终 .exe 文件的图标。

我尝试了一些此类程序,许多生成的二进制文件被标记为恶意软件,但我引用的 Bat2Exe 版本运行良好,生成的 .exe 文件扫描完全干净。

生成的可执行文件可以通过双击以交互方式运行,或从带有参数的命令行运行等,就像常规的批处理文件一样,除了您将能够利用您通常会使用的许多工具的功能在巴什。

我意识到这已经很长了,但如果我可以离题一点,我还编写了一个批处理脚本,我称之为 PortaBashy,我的同事可以从包含便携式 Cygwin 安装的网络共享启动。然后它将 %PATH% 变量设置为正常的 *NIX 格式(/usr/bin:/usr/sbin:/bin:/sbin)等,并且可以启动到 Bash shell 本身或启动更强大的漂亮的 MinTTY 终端模拟器。

总是有很多方法可以完成你想要做的事情;这只是为工作组合合适的工具的问题,很多时候归结为个人喜好。