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

lau*_*kok 112 windows bash command-line sh

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

app/build/build.sh
Run Code Online (Sandbox Code Playgroud)

错误,

'app' is not recognized...
Run Code Online (Sandbox Code Playgroud)

要么,

bash app/build/build.sh
Run Code Online (Sandbox Code Playgroud)

错误,

'bash' is not recognized...
Run Code Online (Sandbox Code Playgroud)

我错过了什么想法?

屏幕抓取, 在此输入图像描述

Fai*_* Mq 115

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

sh test.sh
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 如果安装了GIT,则可以向PATH系统变量添加"sh.exe"的路径.在我的情况下它是:`c:\ Program Files\Git\bin`.然后从PowerShell运行`sh.\ script.sh` (21认同)
  • 如果您使用 VS Code,则可以使用 Git Bash 终端运行 .sh 文件。与上面的答案相同,但保留在 VS Code 内 (3认同)
  • 这对我不起作用。命令提示符窗口打开然后快速关闭。 (2认同)
  • 这对我来说就像 2020 年 Windows 10 的魅力一样!虽然复制/粘贴命令对我不起作用,因为它设置固定为“ctrl-ins”和“shift-ins” (2认同)

tri*_*eee 52

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

谷歌的热门话题是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但由于上述情况,它不太可行.

  • 当然,在 Windows 10 中,您可以启用 WSL,并且 Windows 中几乎拥有一台真正的计算机。 (4认同)

Jor*_*sys 48

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

C:\>sh my-script-test.sh 
Run Code Online (Sandbox Code Playgroud)

其他好的选择是安装CygWin

Windowshome位于:

C:\cygwin64\home\[user]
Run Code Online (Sandbox Code Playgroud)

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

jorgesys@INT024P ~$ bash /home/[user]/my-script-test.sh 
Run Code Online (Sandbox Code Playgroud)

  • 除非你采取了特殊的措施来获得它,否则你不会在Windows上使用`sh`命令. (39认同)
  • 您的答案就像您希望能够在任意Windows命令提示符下键入`sh`并让它工作一样. (38认同)
  • 如果选择"Install Bash"安装选项,Bash和`sh`命令将与Git4Windows一起安装. (3认同)

vip*_*maa 11

你也可以使用cmder

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

截图

cmder.net

  • 虽然它似乎带有一个可选的附加包,其中包括常见的 Unix shell 命令,但基本包似乎只是 `cmd` 的替代品。 (2认同)

小智 9

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

<C:\>\Git\bin 中的程序文​​件

<C:\>\Git\usr\bin 中的程序文​​件

在窗口中输入“ shcmd以重定向到 Bourne shell 并在终端中运行命令。

  • Git Bash 附带 [Git for Windows](https://git-scm.com/download/win)。 (2认同)

Ali*_*hsh 8

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


小智 5

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

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


小智 5

在Windows 10周年更新中,在Windows上的ubuntu上运行bash中的/或运行bash甚至更容易

我试图为x-wrt ​​r7000 netgear路由器设置区域,我发现以下对我有用:在Windows上的ubuntu上使用bash,您必须启用Windows功能中的子系统,并在

ssh admin@192.168.1.1 < /mnt/c/ccode-eu.sh
Run Code Online (Sandbox Code Playgroud)


Ano*_*use 5

我个人使用了这个批处理文件,但它确实需要安装 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% %*'
Run Code Online (Sandbox Code Playgroud)

基于这部原创作品。