如何在Windows上执行.sh文件?
当我试图在命令行中用./name.sh命令执行一个文件(name.sh)时,我得到的错误是:
“. "不被识别为内部或外部命令,可操作或批处理文件
请帮助我执行.sh文件
当我试图在命令行中用./name.sh命令执行一个文件(name.sh)时,我得到的错误是:
“. "不被识别为内部或外部命令,可操作或批处理文件
请帮助我执行.sh文件
你在Windows CMD.EXE上(从错误信息来看)。它使用不同的语法来执行命令。你需要使用sh name.sh
,假设你已经安装了Cygwin或类似的工具。
澄清一下,Windows没有内置的工具来支持.sh文件。要运行这样的工具,你需要安装一个第三方工具,比如Cygwin。
你正试图在Windows命令提示符上运行一个Linux命令。
在Linux上,前斜线是一个路径分隔符。在Windows中,反斜线是路径分隔符,而前斜线一般表示参数。
因此,Windows认为你试图运行一个名为". “的命令,并将其解析为参数”/name.sh"。正确的惯例应该是"./name.sh"。此外,Windows会自动搜索当前目录下的命令,所以你可以直接输入 “name.sh"。
下一个问题是Windows不知道什么是sh脚本,这也是Linux的问题。你可以通过安装Cygwin来解决这个问题,如果你真的想要或需要运行sh脚本的话。
然而,根据你之前的评论,你可以把脚本重命名为name.bat,然后删除 ”#!/bin/sh “一行。现在你有一个批处理文件,Windows应该可以理解。你可以阅读更多关于批处理文件的信息 这里.
下载并安装 .git for Windows
右键点击桌面,说“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'
你试图用橙汁代替汽油来运行你的汽车。Windows与Unix/Linux/zOS的Unix子系统/*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等。 放在U盘上,用于这些特殊场合。
有人说过,MS-DOS用/
表示命令,有人说过,MS-DOS用
/`表示命令,表示路径。这有点误导了。看看我举的例子:
C:\myfoo\foo\>cd../..
C:\myfoo\foo\>cd..\..
&001 没有任何效果。是的,不是所有的操作都是这样的- 实际的答案很简单_否,或者说没有Cygwin或者SSHD你就不能。
我之所以知道,是因为我傻乎乎地花了半天时间想弄清楚if then fi
和eval
,exec
被调用时,-Djava.something
的作用是什么。
使用Github for Windows。它包含所有的Unix环境可执行文件。 https://github-windows.s3.amazonaws.com/GitHubSetup.exe
我找到了一个不同的简单的解决方案,叫做UnixUtil.
下载并解压到C:驱动器。将环境变量path
设置为包含C:\UnixUtils\usr\local\wbin
。
这很重要。不要将路径设置为C:\UnixUtils\bin
为了完整,我想提一下Windows 10的一个新功能 “Linux的Windows子系统"。详情请参见 http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/
注意,它需要激活 "开发者模式 "开关并启用 "Windows Subsystem for Linux (Beta) "选项。
如果你的家里(或工作场所)有一个Linux盒子,并且插在同一个网络上,而且这个网络是安全的,这样做可能会有效果:
好吧,这有很多问题–把#!/bin/sh去掉,然后把扩展改为bat,再修一下就可以了。然后你可以通过文件名来调用它。
unix shell脚本的语法和windows批处理文件的语法不太相似。
虽然这里的答案在当时是正确的,但Windows 10does现在可以选择包含一个运行完整的bash shell的Ubuntu的修改版本。
一旦可执行,脚本可以在bash中以通常的方式运行,例如:
chmod +x myscript.sh
./myscript.sh
如果你想直接在Windows中运行脚本,你可以在同一目录下创建一个快捷方式,并将 “目标 "设置为:
C:\Windows\System32\bash.exe -c "./myscript.sh"
如果你的脚本路径与快捷方式的位置是相对的(如上例),请确保 "Start in "字段也是空白的。
要在windows下运行shell脚本,首先使用命令:dos2unix,然后可以使用正常的命令:sh runide.sh
。首先使用命令:dos2unix,然后你可以使用正常的命令:sh runide.sh
这样就可以了。
有可能问题实际上是在name.sh
文件中—-你正在尝试使用.
命令,但它试图运行一种shell(例如,csh
,我想是name.sh
),而在这种情况下,这不是一个有效的命令。