有没有办法在Windows上运行Bash脚本?[关闭]


100

我已经购买了Windows 7 Ultimate,并且喜欢使用它来开发应用程序。缺点(与每个OS一样)是我无法运行Bash脚本。是否可以通过安装某些软件在Windows上运行Bash脚本?如果它不能100%正常运行是可以的,但是只要可以使用最常用的功能就可以了。


3
@Rajish再也没有……
msanford 2014年


1
@msanford,这没有道理。为什么在关闭其重复项时允许该线程存在?
Pacerier's

@Pacerier重复项已作者删除,几乎可以肯定是它的作者,因为mod倾向于不删除问题。这可能就是我的评论所指的内容。我不知道为什么作者删除了它。也是4年前。
msanford 2015年

Answers:


80

安装Cygwin,其中包括Bash和许多其他GNU和Unix实用程序(如果没有这些实用程序,bash不太可能会非常有用)。

另一个选择是MinGW的MSYS,它包括bash和一小套更重要的实用程序,例如awk。就我个人而言,我更喜欢Cygwin,因为它包含了诸如Perl和Python这样的繁重的工具,我发现我不能没有它们,而MSYS则忽略了这些工具,并假定您将自己安装它们。

已更新:如果有人对此答案感兴趣,并且正在运行MS-Windows 10,请注意,MS-Windows 10具有“ Windows Windows Subsystem For Linux ”功能,该功能启用后即可安装Ubuntu和Windows的用户模式映像。然后在上面运行Bash。这提供了与Ubuntu的100%兼容性,用于调试和运行Bash脚本,但是此设置完全独立于Windows,并且您不能使用Bash脚本与Windows功能(例如进程和API)进行交互,除了通过DrvFS功能对文件的访问受限之外。


2
有关更多信息,请参见Linux的Windows子系统(WSL)文档
造口术'18

1
WSL现在已弃用Windows 10 S ... :(
JavierGarcíaManzano

2
如果您购买更便宜的Windows“ S mall Edition” ,它不是您不具备的功能之一。它在家庭版IIRC中也不可用。
古斯,

Git允许您从Windows上的任何位置轻松运行批处理文件youtube.com/watch?v=7keNZT9579k
Muhammad Faizan Khan

@MuhammadFaizanKhan-Windows的Git端口,以及其他一些“面向命令行”的应用程序(举个例子,就是Github Desktop)也带有Windows Bash端口。这些通常不是MinGW端口(即使用MinGW和MSYS进行编译以实现Posix兼容性)。具体来说,如果您查看Windows的Git安装,则会看到mingw32基本上包含MSYS 的目录。因此,适用于Windows的Git是MinGW,其中包括带有“ nicer”安装程序的Git(它在MSYS安装程序中为可选):superuser.com/a/1362301/10942
Guss

30

我可以找到的最佳选择是Git Windows只需安装它,然后右键单击并单击“此处Git Bash”,这将打开一个bash窗口在此处输入图片说明

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

和Linux命令工作...

我已经尝试过'sh','vi','ssh','curl'等命令


这-它是如此简单,不是吗?
Kalpesh Soni'Sep

是的,非常方便
Garvit Jain

4
如果只需要它的外壳,那么您也可以安装MinGW而不会让Git显得多余。
Stefan Z Camilleri

您可以在这里观看这一分钟的教程youtube.com/watch?v=7keNZT9579k
穆罕默德·法赞·汗

25

如果您想要一些本机的东西,则可以使用getGnuWin32安装所有已移植的unix命令行工具。加上winBash,可以为您提供大部分可运行的unix环境。添加console2以获得更好的终端模拟器,您几乎无法在Windows上告诉您!

总的来说,Cygwin是一个更好的工具包,但是由于它和Windows之间的鸿沟,我发现自己遇到了一些意外问题。但是,这些解决方案都没有本地Linux系统那么好。

您可能希望通过选择发行版来研究使用virtualbox创建Linux VM。设置它以与主机os共享文件夹,您可以使用真正的linux开发环境并与Windows共享。只需提防那些EOL标记,它们每次都会得到。



colinux无法在64位系统上运行(至今)
hexicle

有人知道win-bash项目的后继者吗?它不再积极开发并停留在bash v 1.14上(bash正确,截至本帖子,是v 4.4)
Bjartr

@Bjartr Microsoft员工增加了一项功能,允许bash
Spencer Rathbun

@SpencerRathbun那只能在Windows 10上运行,我碰巧是在Windows 7上。我也不确定它如何与linux和Windows可执行文件以及路径混合使用,所以(从我的角度来看)它可能比cygwin bash更好。
Bjartr '16

11

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


2
不,不是最好的选择。您只是以这种方式运行linux,而不是在Windows中运行bash-您无法从该bash启动Windows可执行文件(除非您使用cbwin...进行解决,但这只是解决方法而已。
ankostis

“最佳”选项可能与口味有关。所以也许你是对的。但是,它确实使我能够在Windows PC上运行任何(大多数)bash脚本。
Paul0515

1
您可以虚拟运行所有bash脚本-只要它们不尝试与主机OS(Windows)交互即可。WSL bash是一个轻量级的虚拟化子系统,可以执行原始的 ELF二进制文件(即Ubuntu)-但是您无法逃脱它!
ankostis

10

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


我需要安装什么软件包才能在Cygwin中运行UNIX Shell?

@rFactor的Cygwin页面包括带有所有必需组件的Windows安装程序。
Spencer Rathbun

Cygwin网站解释了已移植的内容以及如何安装。如果只需要一个shell,则基本的Cygwin安装就足够了。
Michael Shopsin 2011年

9

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

我不是Cygwin的忠实拥护者(是的,我敢肯定它确实很强大),因此在Windows上运行bash脚本而不必为我完美安装它。


1
我不知道什么是git-extensions,但是它的描述说这是git的图形用户界面。您将如何从该工具运行shell脚本?也许您的意思是使用包含的msys bash运行它们?
悲惨的变量2014年

只是为了确认-git-extensions确实包含bash的副本,并将其设置在路径中。我bash从Powershell实例尝试,失败了,安装了git-extensions并重试,它对我有用。
rtpHarry 2015年

4

为了本机运行,您可能需要使用Cygwin(如果没有Windows,我将无法生存)。因此,马上行动,为Cygwin +1。其他任何事情都不文明。

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

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

我喜欢UnxUtils而不是GnuWin32,因为[如果我错了,请有人纠正我]通常必须安装GnuWin utils,而UnxUtils是独立的二进制文件,可以直接使用。

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

我为项目创建一个文件夹,并始终设置SET PATH =。在.bat文件中,因此除了基本CMD Shell命令以外,没有其他命令被引用(以及项目文件夹中特定的UnxUtils,批处理脚本才能正常工作)。

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

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

我已经尝试了其中几种类型的程序,并且许多生成的二进制文件都被标记为恶意软件,但是我引用的Bat2Exe版本运行正常,并且生成的.exe文件扫描得很干净。

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

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

总是有很多方法可以完成您打算要做的事情。只是结合正确的工具来完成工作,而且很多时候都归结为个人喜好。


1

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

可惜,但是我自己还没有找到一个编译过的人。


3
Windows上的POSIX sybsystem已被放弃[1]。被基于“吊桥”轻型虚拟化系统的“ Linux的Windows子系统”代替,以运行未修改的Ubuntu-bash。但是有些细微差别,例如,一旦进入该系统,您将无法再调用Windows可执行文件![1] blogs.msdn.microsoft.com/wsl/2016/04/22/…–
ankostis

@ankostis,实际上,有了CU,您就可以...
Paul0515 '17
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.