如何在Windows中运行Shell脚本?[重复]


23

我是Mac用户,是Windows的新用户。如何在Windows中执行Shell脚本?

通常,我将使用扩展名保存文本文件.sh并通过Terminal运行它。但是我该如何在Windows中做到这一点?



2
您能否提供您希望在Windows上运行的脚本的示例?

1
您是否要运行预先存在的.shShell脚本?还是只想知道如何为Windows编写脚本?
Keltari

Answers:


30

.sh后缀的脚本通常是Bourne shell脚本(或bash或ksh或zsh-所有从Bourne shell派生的外壳)。(请注意,在包括MacOS在内的类似Unix的系统上,.sh后缀不是必需的; OS会查看#!/bin/sh脚本顶部的行来确定如何执行该后缀。)

Windows没有提供类似Bourne的外壳。

您可以安装Cygwin,它在Windows下提供了一个类似Unix的环境-但它没有特别的“本机”环境。(编辑评论:Cygwin非常适合像我这样需要使用Windows但宁愿使用Unix的人。)

还有其他在Windows下运行的类Unix子系统,包括MinGW和Microsoft提供的Windows Services for UNIX软件包。

或者,您可以编写Windows批处理文件,而不必尝试编写和运行类似Unix的Shell脚本。这些通常带有.bat.cmd后缀。它们使用与Windows交互式命令提示符相同的命令和语法。

还有相对较新的Windows PowerShell;我本人并不熟悉它,但是我听说过一些好东西。


3
我将以powershell用户的身份支持该powershell的建议,该用户已经编写了一些脚本来完成从重启远程计算机或关闭远程计算机上的服务到从活动目录中提取计算机名称列表,按字母顺序排列以及对每个脚本进行测试等所有操作。某些服务并进行大型复杂的文件移动。它实际上可以在Windows中完成所有操作。
Paperlantern'1

1
值得一提的是,虽然cygwin的可允许脚本运行,它可能不正确,如果它使对基本系统(即,可用的二进制文件,文件系统布局等)的一些假设运行
Daenyth


2

在Win上,常见的扩展名是.bat.cmdss64是Windows Shell中使用的命令的很好来源-适用于CMD和PowerShell。

Cygwin不是“必须”。它只是给您Linux风格-在Win上使用BASH。


2

那UWIN呢?

UWIN是由David Korn创建的计算机软件包,该软件包允许为Unix操作系统编写的程序可以在Microsoft Windows上构建并运行,而无需进行任何更改(如果有的话)。某些软件开发已分包给印度的Wipro。

检查此UWIN-Windows版Unix

UWIN的主要特点

  1. 在Windows上从Unix访问几乎所有的命令行工具。确切地说是245个命令行工具。
  2. 与原始的Unix编译器“ cc”以及许多工具(如“ make”)和必要的库捆绑在一起,这些库允许Unix应用程序在Windows计算机上构建并运行,而源代码却很少或没有任何变化。
  3. 选择使用其他编译器(例如Visual C ++或Mingw)来编译程序。完整的Perl软件包。
  4. X Windows库,适合那些希望在Windows上开发X应用程序的人。尽管要在Windows中运行这些应用程序,您需要一个与UWIN不捆绑在一起的X服务器。
  5. UWIN带有控制面板小程序(可通过“开始”->“设置”->“控制面板”->“ UWIN”访问),可用于配置某些UWIN系统参数。

UWIN的用途

  • 在Windows中以全速运行Unix应用程序。
  • 在Windows上使用Unix命令行工具的全部功能。
  • 与UWIN捆绑在一起的korn外壳使Unix用户在Windows环境中感到宾至如归。
  • 在Windows上开发和运行UNIX应用程序。
  • 在Windows平台上开发X应用程序。

UWIN的缺点

  • UWIN未与X服务器捆绑在一起,因此用户将无法在Windows上运行X应用程序。尽管有第三方商用X服务器可以填补这一空白。
  • UWIN不是根据GPL发布的,而是可以免费下载和用于教育和非商业目的

那是我上大学时用来教我们Linux Command的软件。真的很好。


参考:WikiPedia

Cygwin是Microsoft Windows的类Unix环境和命令行界面。

好消息是Cygwin提供了基于Windows的应用程序,数据和其他系统资源与类Unix环境的应用程序,软件工具和数据的本地集成。

Interix
Interix是Unix服务(SFU)版本3.0和3.5的组件(最后一个是免费分发的)。

Interix 5.2和6.0的最新版本是Windows Server 2003 R2,Windows Vista Enterprise和Ultimate版以及Windows Server 2008的组成部分,名称为SUA(基于Unix的应用程序的子系统),版本6.1已包含在Windows 7中(企业版和旗舰版)和Windows Server 2008 R2(所有版本)


2

使用Windows 10周年更新还有另一种方法。Windows中现在有一个Bash(Ubuntu)shell。

为了使用它,您需要安装该功能,因为默认情况下未启用该功能。

  1. 转到Control Panel-> Programs-> Turn Windows Features On and Off

  2. 选中的复选框Windows Subsystem for Linux (Beta)。这将安装该功能并提示重新启动。

然后,您可以通过运行-> cmd然后键入bash或运行-> 打开命令提示符bash.exe

这将为您提供一个没有虚拟机,Cygwin或virtualbox的bash shell。


1

尽管这里的现有的答案是正确的时候,Windows 10 没有现在可选包括的Ubuntu上运行一个完整的bash shell的修改版本

安装后,您可以打开bash提示符(就像在OS X / macOS中使用终端一样),并照常运行脚本,即:

chmod +x myscript.sh
./myscript.sh

如果要直接从Windows运行脚本,则可以在同一目录中创建快捷方式,并将“目标”设置为类似以下内容:

C:\Windows\System32\bash.exe -c "./myscript.sh"

如果脚本的路径相对于快捷方式的位置(如上面的示例),请确保“开始于”字段也为空白。


0

您将需要CygWin,然后我相信您将能够运行:

sh yourscript.sh

0

Kenaniah在评论中给出了正确的答案,您必须使用批处理文件。您需要将外壳程序代码文件命名为* .bat,然后可以通过单击它来运行它,也可以在终端中简单地键入其名称。请注意,Windows终端不能完全像unix终端那样工作。您会在网上找到许多有关命令和语法的帮助和教程。也有可能使用Windows PowerShell,它看起来更像是Unix。

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.