Answers:
错误消息表明您尚未安装bash
,或者它不在您的计算机中PATH
。
Google最受欢迎的网站是http://win-bash.sourceforge.net/,但您还需要了解,大多数Bash脚本都希望使用类似Unix的环境。因此,除非专门针对此特定使用场景设计了Bash,否则仅安装Bash可能不太可能允许您运行在网上找到的脚本。常见的解决方案是https://www.cygwin.com/,但是有很多可能的选择,具体取决于您要实现的目标。
如果Windows不是您使用情况的中心,那么安装免费的OS(可能是虚拟的)可能是最简单的方法。
第二条错误消息是由于Windows名义上接受正斜杠作为目录分隔符,但是在这种情况下,它被解释为开关分隔符。换句话说,Windows将您的命令行解析为app /build /build.sh
(或用Unix选项约定来解释app --build --build.sh
)。您可以尝试,app\build\build.sh
但由于上述情况,它不太可能起作用。
安装GIT。在安装GIT的过程中,通过选择GIT Bash选项将其添加到Windows上下文菜单。安装后,右键单击您的文件夹,选择GIT Bash Here
(请参阅附件图片),然后使用sh命令,例如:
sh test.sh
sh.exe
。就我而言是:c:\Program Files\Git\bin
。然后sh .\script.sh
从PowerShell 运行
ctrl-ins
和shift-ins
运行.sh文件的最常见方法是使用sh命令:
C:\>sh my-script-test.sh
另一个不错的选择是安装CygWin
在Windows
该home
位于:
C:\cygwin64\home\[user]
例如我my-script-test.sh
使用bash命令执行文件,如下所示:
jorgesys@INT024P ~$ bash /home/[user]/my-script-test.sh
sh
在Windows上使用命令。
sh
在任意Windows命令提示符下键入并使之正常工作一样。
sh
如果选择“安装Bash”安装选项,则Bash和命令将随Git4Windows一起安装。
在Windows 10周年更新中,在Windows上的ubuntu上使用bash运行shell命令甚至更简单
我试图为x-wrt r7000 netgear路由器设置区域,我发现以下对我有用:在Windows上的ubuntu上使用bash,您必须启用Windows功能中的子系统,并在
ssh admin@192.168.1.1 < /mnt/c/ccode-eu.sh
Windows中的新功能-在Windows的ubuntu上运行bash-在构建会议之后的Windows 10“ Insiders”构建中可用:
https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/
sh
文件bash
?如果我尝试这样做,则窗口只会闪烁并消失。如果我将文件拖放到打开的bash窗口中,则表示找不到该路径(因为它使用了不同的约定)。
bash path/to/script
运行脚本。sh
在Ubuntu中当然也有。如果脚本具有适当的shebang和权限,只需path/to/script
使用shebang中指定的rnterpreter 即可运行该脚本。
我个人使用了此批处理文件,但它确实需要安装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% %*'
基于此原始工作。
.sh
在Windows上运行文件的唯一方法。