如何在 Windows 上执行 .sh 文件?

75 windows shell-script

当我尝试通过命令 ./name.sh 在命令行中执行文件(name.sh)时,出现以下错误:

“。” 不是内部或外部命令、可操作文件或批处理文件

请帮我执行 .sh 文件

Rog*_*mbe 80

您使用的是 Windows CMD.EXE(来自错误消息)。它使用不同的语法来执行命令。sh name.sh假设您已经安装了 Cygwin 或类似软件,您将需要使用。

澄清一下,Windows 没有支持 .sh 文件的内置实用程序。要运行它,您需要安装第三方工具,例如Cygwin

  • 你也可以不只在 Windows 上安装 Git 吗?这样做似乎增加了对 shell 脚本的支持,即使这些 shell 脚本不执行与 Git 相关的任务。 (7认同)
  • @DavidB 是的,如果您将 C:\Program Files (x86)\Git\bin(或您计算机上的任何内容)放在您的 PATH 中,这会起作用,因为 Git 在其中放置了各种有用的工具,包括 sh.exe (2认同)

Han*_*yer 20

我认为最好的解决方案:

  • 下载并安装适用于 Windows 的 .git

  • 右键单击桌面并说“git bash here”

  • 像在 unix 中一样执行你的脚本

  • 完毕!

注意:许多命令在 Windows 上不起作用!但是,许多基本的东西仍然可以工作。

如果您经常需要该脚本,您可能需要创建一个快捷方式(例如在您的桌面上):

  • 创建一个快捷方式mintty.exe桌面上

  • 编辑快捷方式的属性并更改目标(保留路径):

  • C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'


小智 14

您正在尝试在 Windows 命令提示符下运行 Linux 命令。

在 Linux 上,正斜杠是一个路径分隔符。在 Windows 上,反斜杠是路径分隔符,正斜杠通常表示参数。

因此,Windows 认为您正在尝试运行名为“.”的命令。并解析它的参数“/name.sh”。正确的约定是“.\name.sh”。此外,Windows 会自动在当前目录中搜索您的命令,因此您只需键入“name.sh”即可。

您将面临的下一个问题是 Windows 不知道 sh 脚本是什么,这又是 Linux 的事情。如果您真的想要或需要运行 sh 脚本,您可以通过安装 Cygwin 来解决此问题。

但是,根据您之前的评论之一判断,您也可以将脚本重命名为 name.bat 并删除“#!/bin/sh”行。现在你有一个 Windows 应该理解的批处理文件。您可以在此处阅读有关批处理文件的更多信息。


小智 11

或者,您可以转向阴暗面并安装 Linux。从提示:

sh runide.sh
Run Code Online (Sandbox Code Playgroud)

或者

sudo sh runide.sh
Run Code Online (Sandbox Code Playgroud)

您的程序将运行,您也将拥有一个更好的系统。

  • 这就像在说,“只要变得富有,付钱给某人为你做这件事” (20认同)

小智 5

你试图用橙汁而不是汽油来驱动你的汽车。Windows 与 Unix/Linux/zOS Unix Subsystem/*ix shell 脚本共享存储在 .bat 或 .cmd 文件中的类似命令,因为这两个操作系统系列共享一个共同的祖先 DEC PDP-x 机器。

如果您想要即时满足,您将需要安装一个提供“sh.exe”程序或“csh.exe”或“bash.exe”程序的环境(tsh.exe 任何人?)

或者,如果您非常了解 Unix 脚本命令,并且非常了解 Windows .cmd 和 .bat 文件命令,那么您可以将 .sh 文件转换为 .bat 或 .cmd 文件。即便如此,你还是经常会遇到更多 Unix 风格的程序,它们在 Windows 下没有等价物——grep、sed、vi、emacs 等。 因此,调用安装 CygWin(非极简)——只是为了得到 shell 和 Unix工具。把它放在闪存驱动器上,在这些特殊场合。


小智 0

问题可能实际上出在文件内name.sh- 您正在尝试使用该.命令,但它正在尝试运行一种 shell(例如,csh我认为),其中这不是有效的命令。

那么:是否name.sh从正确的开始#!/bin/sh(如果您实际上正在尝试运行sh)?