问题描述
当我尝试通过命令./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。
次佳解决方案
看得出来,您尝试在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环境需要的可执行文件。
参考资料