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

时间:2011-06-20 15:10:03

标签: windows bash

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

8 个答案:

答案 0 :(得分:68)

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

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

<强>更新: 如果有人对此答案感兴趣并且正在运行MS-Windows 10,请注意MS-Windows 10具有“Windows Subsystem For Linux”功能 - 一旦启用 - 允许您安装Ubuntu的用户模式映像,然后在那上面运行Bash。这提供了与Ubuntu的100%兼容性,用于调试和运行Bash脚本,但是此设置完全独立于Windows,您无法使用Bash脚本与Windows功能(例如进程和API)进行交互,除了通过{{{{{{{ 3}}功能。

答案 1 :(得分:24)

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

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

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

答案 2 :(得分:12)

我能找到的最佳选项是Git Windows只需安装它然后右键单击并点击&#34; Git Bash Here&#34;这将打开一个bash窗口enter image description here

这将打开一个像这样的bash窗口:enter image description here

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

我已经尝试过&#39; sh&#39; ,&#39; vi&#39; ,&#39; ssh&#39; ,&#39; curl&#39;等等......命令

答案 3 :(得分:10)

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

答案 4 :(得分:9)

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

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

答案 5 :(得分:7)

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

答案 6 :(得分:3)

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

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

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

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

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

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

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

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

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

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

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

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

答案 7 :(得分:1)

还有一个理论上的可能性:Windows的专业版本具有内置的POSIX支持,因此可以为Windows本地编译bash。

可惜,但我自己还没有找到一个编译的......