linux运行cmd文件sh文件目录,在Windows上,如何执行.sh文件?

  • Post author:
  • Post category:linux

问题描述

当我尝试通过命令./name.sh在命令行中执行文件(name.sh)时,我收到错误消息:

“.” is not recognized as an internal or external command, operable or batch file

执行.sh文件的正确方法是?

最佳解决方法

从错误信息来看,你使用的是Windows CMD.EXE。它使用跟Linux不同的语法来执行命令。假设您已经安装了Cygwin或类似的设备,则需要使用sh name.sh。

需要澄清的是,Windows系统上没有内置程序来支持.sh文件。要运行它,您需要安装第三方工具,例如Cygwin。

b6c5a6bd9bb8d955c8778898b631ded2.png

次佳解决方案

看得出来,您尝试在Windows命令提示符下运行Linux命令。下面从两个方面看这个问题:

第一个方面:

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

因此,Windows认为您正在尝试运行一个名为”.”的命令并将其解析为参数”/name.sh”。正确的约定将是”.\name.sh”。此外,Windows系统会自动搜索当前目录中的命令,所以您可以直接输入”name.sh”。

第二个方面:

Windows并不知道什么是sh脚本,sh是一个Linux上的概念。通常可以安装Cygwin来解决这个问题,如果你真的想要在windows上运行一个sh脚本。

另外,您也可以将脚本重命名为name.bat,并删除”#!/bin/sh”行。现在你有一个Windows应该理解的批处理文件。更多有关批处理文件参考:这里中的信息。

第三种解决方案

另外一种选择,安装Linux系统吧。从命令提示行输出:

sh runide.sh

要么

sudo sh runide.sh

就可以正常执行程序了。

第四种方案

Windows系统本身不能运行.sh来执行shell脚本。是已经安装了像CygWin这样的东西,程序不能执行?还是就是想在cmd.exe中运行程序?

第五种方案

打个比方,你这样做相当于试图用橙汁代替汽油来驱动你的汽车。

如果一定要这样做,需要安装一个提供”sh.exe”程序或”csh.exe”或”bash.exe”程序(tsh.exe)的环境

或者,如果您非常了解Unix脚本命令,并且您知道Windows .cmd和.bat文件命令,那么您可以将.sh文件转换为.bat或.cmd文件。即使如此,您也将经常遇到更多的Unix风格的程序,在Windows下没有对应,如grep,sed,vi,emacs等。因此,安装CygWin – 只需其中的shell和Unix工具。

其他方案

在Windows中使用Github吧,它包含所有Unix环境需要的可执行文件。

参考资料