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

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

安装Cygwin ,其中包括许多其他的GNU和Unix公用事业的Bash(没有他们不太可能的bash将是非常有用的无论如何)。

另一个select是MinGW的MSYS ,其中包括bash和一些更重要的实用工具,比如awk。 就个人而言,我更喜欢Cygwin,因为它包含了像Perl和Python这样的繁重的工具,我发现自己不能没有,而MSYS则对这些工具嗤之以鼻,假设你将自己安装它们。

更新 :如果有人对这个答案感兴趣,并且正在运行MS-Windows 10,请注意,MS-Windows 10有一个“ Windows Linux子系统 ”function,一旦启用,它允许您安装Ubuntu的用户模式映像然后运行Bash。 这提供了100%与Ubuntu的兼容性,用于debugging和运行Bash脚本,但是这种设置是完全独立于Windows的,您不能使用Bash脚本与Windowsfunction(如进程和API)进行交互,除非通过DrvFSfunction对文件进行有限的访问。

如果你想找一些更原生的东西,你可以使用getGnuWin32来安装已经移植过的所有unix命令行工具。 这加winBash给你一个工作的Unix环境的大部分 。 添加console2更好的terminal模拟器,你几乎不能告诉你的窗口!

Cygwin总体来说是一个更好的工具包,但是由于它和窗口之间的鸿沟,我发现自己遇到了惊喜问题。 尽pipe这些解决scheme都不如原生Linux系统。

您可能需要考虑使用virtualbox来创build一个Linux虚拟机与您的发行版的select。 设置它与主机os共享一个文件夹,你可以使用一个真正的linux开发环境,并与Windows共享。 只要注意那些EOL标记,他们每次都会得到你。

你可以随时安装Cygwin在Windows下运行一个Unix shell。 我在Windows XP中广泛使用了Cygwin。

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

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

最好的select? Windows 10.本机Bash支持!

最好的select,我能find的是Git窗口只要安装它,然后右键单击,然后单击“Git Bash Here”这将打开一个bash窗口 在这里输入图像说明

这将打开一个bash窗口,如下所示: 在这里输入图像说明

和Linux命令工作…

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

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

尽pipe如此,我最近已经开始使用实用程序的组合来轻松将Bash脚本移植到Windows,这样我的反Linux同事就可以轻松地运行GNU实用程序能够更好地处理的复杂任务。

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

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

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

我为项目创build一个文件夹,总是SET PATH =。 在.bat文件中,除了引用基本CMD shell命令之外,不会引用其他任何命令(以及项目文件夹中所需的特定UnxUtils,以便批处理脚本按预期工作)。

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

Bat2Exe程序是魔术发生的地方。 一旦您的batch file完成,并已成功testing,启动Bat2Exe.exe,并指定项目文件夹的path。 然后,Bat2Exe将创build一个包含该特定文件夹中所有文件的Windows二进制文件,并将使用第一个.bat文件作为主要的可执行文件。 甚至可以包括一个.ico文件作为生成的最终.exe文件的图标。

我已经尝试了这些types的程序,许多生成的二进制文件被标记为恶意软件,但我引用的Bat2Exe版本完美地工作,生成的.exe文件扫描完全干净。

由此产生的可执行文件可以通过双击交互式运行,或者像命令行文件那样通过命令行运行,就像一个普通的batch file一样,除非您能够使用许多通常使用的工具的function在Bash。

我意识到这会变得相当长,但如果我可能会离题,我还写了一个批处理脚本,我称之为PortaBashy,我的同事可以从包含可移植Cygwin安装的networking共享中启动。 然后它将%PATH%variables设置为普通的* NIX格式(/ usr / bin:/ usr / sbin:/ bin:/ sbin)等,并且可以启动到Bash shell本身,也可以启动function更强大的漂亮的MinTTYterminal模拟器。

总有很多方法可以完成你想要做的事情; 这只是将正确的工具结合起来的问题,多次归结为个人的偏好。

还有一种理论上的可能性:Windows的专业版本具有内置的POSIX支持,所以bash本来就可以针对Windows进行编译。

可惜,但我还没有find一个编译自己…