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

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

291369 次浏览

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

另一个选项是 MinGW 的 MSYS,它包括 bash 和一个较小的更重要的实用程序集,比如 awk (您可能还想检查竞争 fork-Mingw-w64)。就我个人而言,我更喜欢 Cygwin,因为它包含了像 Perl 和 Python 这样的繁重的工具,我发现我离不开它们,而 MSYS 省略了这些工具,并假设您将自己安装它们。

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

你总是可以安装 Cygwin在 Windows 下运行 Unix shell。

如果您正在寻找一些更原生的东西,您可以使用 GetGnuWin32来安装所有已经移植的 Unix 命令行工具。加上 WinBash,就可以得到一个工作的 Unix 环境的 大部分。添加一个更好的虚拟终端,你几乎不能告诉你是在 Windows!

总的来说,Cygwin 是一个更好的工具箱,但是我发现自己遇到了一些令人惊讶的问题,因为它和 Windows 之间的差距。但是,这些解决方案都不如本地 Linux 系统。

您可能需要考虑使用 虚拟盒子来创建带有您选择的发行版的 linux VM。将其设置为与主机操作系统共享一个文件夹,您就可以使用真正的 Linux 开发环境,并与 Windows 共享。小心那些 EOL 标记,他们每次都能抓到你。

还有一种理论上的可能性: Windows 的专业版本已经内置了 POSIX 支持,因此 bash 可以为 Windows 本机编译。

可惜,我自己还没找到合适的。

在安装了 git 扩展(http://gitextensions.github.io/)之后,您可以运行。来自命令提示符的 sh 文件。(没有。/script.sh 是必需的,只需像 bat/cmd 文件那样运行它) 或者您可以使用 MinGWGitbash shell 在“完整”bash 环境中运行它们。

我不是 Cygwin 的超级粉丝(是的,我确信它真的很强大) ,所以在 windows 上运行 bash 脚本,而不需要为我安装完美的版本。

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

尽管如此,我最近已经开始使用一些工具组合来轻松地将 PORT Bash 脚本传输到 Windows,这样我的反 Linux 同事就可以轻松地运行复杂的任务,这些任务由 GNU 工具可以更好地处理。

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

我更喜欢 UnxUtils 而不是 GnuWin32,因为事实上(如果我错了,请有人纠正我) GnuWin 工具通常必须安装,而 UnxUtils 是独立的二进制文件,只是开箱即用。

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

我为这些项目创建一个文件夹,并始终使用 SETPATH = 。在。Bat 文件,以便除了基本的 CMD shell 命令之外不引用其他命令(以及项目文件夹中需要的特定 UnxUtils,这样批处理脚本才能按预期运行)。

然后复制所需的 CoreUtils。将 exe 文件引用到项目文件夹中,并在。Bat 文件,例如”。Curl.exe-s google.com”等等。

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

我已经尝试了其中的一些类型的程序,并且许多生成的二进制文件被标记为恶意软件,但是我引用的 Bat2Exe 版本工作得很好,并且生成了。Exe 文件完全扫描干净。

生成的可执行文件可以通过双击交互式运行,或者从带有参数的命令行运行,等等,就像一个普通的批处理文件一样,只不过你可以利用许多你通常在 Bash 中使用的工具的功能。

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

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

我能找到的最好的选择是 Git Windows只要安装它,然后右键单击并点击“ Git Bash 这里”这将打开一个 Bash 窗口enter image description here

这将打开一个 bash 窗口,如下所示:enter image description here

Linux 命令可以正常工作。

我尝试了“ sh”、“ vi”、“ ssh”、“ curl”等命令

最佳选择? Windows10。支持本机 Bash!