在WINDOWS系统上运行UNIX脚本

4

我有几个问题:

是否有办法让UNIX脚本在Windows操作系统下运行,而无需像CYGWIN这样的附加组件?

是否有办法将UNIX脚本转换为Windows批处理脚本,以便在Windows命令提示符中运行?

我搜索了一下,但是我被引导到UNIX命令win2unix或unix2win,它们用于将文件从/转换为Windows/UNIX格式。

谢谢帮助。


在Windows上执行UNIX脚本的方法是使用像Cygwin这样的工具。将bash脚本转换为Windows批处理文件就像将程序从PHP翻译成C(或其他组合)一样:它涉及学习基础知识,以便您可以重写它。 - fedorqui
在UNIX下运行shell脚本是不可能的,没有shell(和其他一些程序)是不行的。与Windows的唯一区别是,在每个类UNIX系统中通常都有一个“sh”兼容的shell,而在Windows下则没有。但这只是巧合,或者说是不幸,或者你想怎么称呼它都可以。 - Damon
转换就像“谷歌翻译”一样,可以通过编写批处理或PowerShell脚本来实现相同的功能。 - Stephan
@Damon:恐怕我不明白你的意思。在Windows中,如果没有shell(和其他一些程序),也不可能运行shell脚本,而且.bat兼容的shell通常是每个Windows系统的一部分,而sh兼容的脚本则不是。我不明白像“唯一的区别”、“只是巧合”或“倒霉”这样的术语如何适用于这种情况。你的评论很令人困惑... - Aacini
1
@Aacini:显而易见的“问题”是,在Windows下无法运行bash脚本(假设使用bash,但也可能是任何shell)而不使用“类似Cygwin”的东西(或者MSYS、GNUWin等)。但事实上,在Unix下也不能。只有在Unix下,兼容的shell恰好总是存在(嗯,不是_总是_,但通常是这样)。需要脚本解释器来运行脚本并不奇怪(在我看来),就像打开Word文档需要类似“Word”的东西一样。 - Damon
显示剩余2条评论
2个回答

2
我知道您不想要一个“添加程序”,但如果这可以帮助您:您可以下载MobaXterm(或其便携版),其中包括许多东西,包括许多Unix实用程序(shell等)和很多可从他们的网站上下载的内容。
便携版最方便(例如,您可以将其放在USB密钥上)。
它比Cygwin/等软件要慢得多(大多数命令是通过某个主二进制文件模拟的,许多shell“内置”变成了该二进制文件的调用,例如),但非常便携和整洁。
其他解决方案(转换等)可能也需要某种类型的二进制文件,因此我建议使用上述方法,因为它非常便携,并为您提供了一种“在Windows内部的迷你Unix”。

1

这个老问题的另一个答案是安装和运行轻量级的类Unix模拟器。以下是一些选项:

  • MinGW -- GNU编译器集合(GCC)的本地Windows端口
  • MSYS -- 命令行终端称为mintty,bash、版本控制系统如git和subversion、tar和awk等工具,甚至是像autotools这样的构建系统
  • GitBash -- 用于从命令行运行Git的BASH仿真。*NIX用户应该感到非常熟悉

以上列表中的安装微型环境比typical Cygwin安装要轻。此外,在我的经验中,这些环境中的大多数Bash脚本与本机Linux环境运行相当。

另一个选择是安装类似WSL2的Linux子系统

另一个选择是手动将Bash转换为DOS,或者使用类似于Bash-to-BAT converter这样的部分辅助工具,它并不是非常全面,还可以参考Advanced Bash-Scripting Guide


此外,在 Windows 环境下编辑的任何 Bash 脚本可能需要运行 dos2unix 实用程序,以将 Windows 回车符转换为 Bash 可理解的 LF - ingyhere

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接