如何在Windows命令提示符下运行.sh?

时间:2014-10-23 06:59:06

标签: windows bash command-line sh

如何在Windows 7命令提示符下运行.sh?当我尝试在其中运行此行时,我总是会收到此错误,

app/build/build.sh

误差,

'app' is not recognized...

,或者

bash app/build/build.sh

误差,

'bash' is not recognized...

任何想法我错过了什么?

这里的屏幕抓取, enter image description here

11 个答案:

答案 0 :(得分:95)

安装GIT。在安装GIT期间,通过选择其选项将GIT Bash添加到Windows上下文菜单。安装完成后右键单击您的文件夹,选择GIT Bash Here(参见附图)并使用sh命令,例如:

sh test.sh

enter image description here

答案 1 :(得分:44)

错误消息表明您尚未安装bash,或者它不在PATH

Google排名最高的是http://win-bash.sourceforge.net/,但您还需要了解大多数Bash脚本需要类似Unix的环境;因此,安装Bash可能不太可能允许您运行在网络上找到的脚本,除非它是专门为此特定使用场景设计的。通常的解决方案是https://www.cygwin.com/但是有很多可能的替代方案,具体取决于你想要完成的是什么。

如果Windows不是您的使用场景的核心,那么安装免费操作系统(可能是虚拟化的)可能是最简单的方法。

第二条错误消息是由于Windows名义上接受正斜杠作为目录分隔符,但在此上下文中,它被解释为切换分隔符。换句话说,Windows将您的命令行解析为app /build /build.sh(或者,用Unix选项约定来解释app --build --build.sh)。您可以尝试app\build\build.sh,但由于上述情况,它不太可行。

答案 2 :(得分:43)

运行.sh文件的最常用方法是使用 sh 命令:

C:\>sh my-script-test.sh 

其他不错的选择是安装CygWin

Windows home中的

位于:

C:\cygwin64\home\[user]

例如,我使用bash命令执行我的my-script-test.sh文件:

jorgesys@INT024P ~$ bash /home/[user]/my-script-test.sh 

答案 3 :(得分:6)

你也可以使用cmder

  

Cmder是一个软件包,由于在Windows上缺少漂亮的控制台模拟器而纯粹受挫。它基于令人惊叹的软件,并采用Monokai配色方案和自定义快速布局,从一开始就看起来很性感

Screenshot

cmder.net

答案 4 :(得分:4)

在Windows 10周年更新中,在Windows上的ubuntu上使用bash运行shell命令更加容易

我试图为我的x-wrt ​​r7000 netgear路由器设置我的区域,我发现以下对我有用,在Windows上使用ubuntu上的bash,你必须启用在windows功能中找到的子系统,以及开发模式在< / p>

ssh admin@192.168.1.1 < /mnt/c/ccode-eu.sh

答案 5 :(得分:3)

Windows中的新功能 - 在Windows上的ubuntu上运行bash - 在Windows 10中可用“Insiders”在Build会议之后构建:

https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/

答案 6 :(得分:3)

我个人使用过这个批处理文件,但确实需要安装CygWin(如图所示为64位)。 只需将文件类型.SH与此批处理文件(在我的情况下为ExecSH.BAT)关联,然后双击.SH即可运行。

@echo off
setlocal

if not exist "%~dpn1.sh" echo Script "%~dpn1.sh" not found & goto :eof

set _CYGBIN=C:\cygwin64\bin
if not exist "%_CYGBIN%" echo Couldn't find Cygwin at "%_CYGBIN%" & goto :eof

:: Resolve ___.sh to /cygdrive based *nix path and store in %_CYGSCRIPT%
for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%~dpn1.sh"') do set _CYGSCRIPT=%%A
for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%CD%"') do set _CYGPATH=%%A

:: Throw away temporary env vars and invoke script, passing any args that were passed to us
endlocal & %_CYGBIN%\mintty.exe -e /bin/bash -l -c 'cd %_CYGPATH%;  %_CYGSCRIPT% %*'

基于this原作。

答案 7 :(得分:1)

在Windows操作系统中安装GitBash工具。在安装Git的系统的环境变量中设置以下Path

\ Git \ bin中的程序文​​件

\ Git \ usr \ bin中的程序文​​件

cmd窗口中键入' sh ',以重定向到Bourne Shell中并在终端中运行命令。

答案 8 :(得分:1)

您是否尝试过 cd 到您的 .sh 所在的根目录以从那里执行它,而不是像您在问题中显示的那样写下文件的路径?< /p>

像这样:

$ cd app/build
$ build.sh

答案 9 :(得分:0)

我按照here的指导在Windows 10中使用Windows 10 Bash shell aka Linux子系统aka Ubuntu

答案 10 :(得分:0)

只需安装 git 并通过“bash ”运行您的 .sh 文件。