【问题标题】:How to run .sh on Windows Command Prompt?如何在 Windows 命令提示符下运行 .sh?
【发布时间】:2014-12-18 19:23:52
【问题描述】:

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

app/build/build.sh

错误,

'app' is not recognized...

或者,

bash app/build/build.sh

错误,

'bash' is not recognized...

任何想法我错过了什么?

这里是屏幕抓取,

【问题讨论】:

  • 你需要 cygwin(可能)。您正在尝试在 Windows 上运行 SHELL (.sh) 脚本,这是我在 Windows 上运行 .sh 文件的唯一方法。

标签: windows bash command-line sh


【解决方案1】:

错误提示说明你没有安装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,但由于上述情况,它不太可能奏效。

【讨论】:

  • 当然,在 Windows 10 中,您可以启用 WSL,并且在您的 Windows 中几乎拥有一台真正的计算机。
【解决方案2】:

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

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

其他不错的选择是安装CygWin

Windowshome 位于:

C:\cygwin64\home\[user]

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

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

【讨论】:

  • 除非您采取了特殊措施来获取它,否则您不会在 Windows 上使用 sh 命令。
  • 好吧 -1 ,你的意思是我必须添加一个教程才能从命令行访问 sh ???
  • 您的答案显示为您希望能够在任意 Windows 命令提示符下键入 sh 并使其正常工作。
  • 如果您选择“Install Bash”安装选项,Bash 和 sh 命令将随 Git4Windows 一起安装。
  • 这不能直接在命令提示符下工作,但正如 Joel Ellis 所说,在 git bash 上工作
【解决方案3】:

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

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

【讨论】:

  • 很酷,但是如何使用bash 运行sh 文件?如果我尝试这样做,窗口就会闪烁并消失。如果我将文件拖放到打开的 bash 窗口中,它会说找不到路径(因为它使用不同的约定)。
  • 现在可以在 Windows 上运行 .sh 文件吗?我现在不能尝试,但我有兴趣。
  • 我自己没有尝试过,但是微软有一个关于如何在windows上运行sh的指南:docs.microsoft.com/en-us/windows/wsl/install-win10
  • @m93a 在 Ubuntu 终端窗口中,bash path/to/script 运行脚本。在 Ubuntu 中当然也有 sh。如果脚本具有适当的 shebang 和权限,只需 path/to/script 将使用 shebang 中指定的 rnterpreter 运行它。
【解决方案4】:

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

sh test.sh

【讨论】:

  • 它对我不起作用。命令提示符窗口打开,然后快速关闭。
  • 如果您安装了 GIT,您可以在 PATH 系统变量中添加一个指向 sh.exe 的路径。就我而言,它是:c:\Program Files\Git\bin。然后从 PowerShell 运行 sh .\script.sh
  • 这对我来说就像 2020 年 Windows 10 中的魅力一样!虽然复制/粘贴命令对我不起作用,因为它设置为固定在 ctrl-insshift-ins
  • 如果您使用的是 VS Code,您可以使用 Git Bash 终端运行 .sh 文件。与上述答案相同,但留在 VS Code 中
【解决方案5】:

在 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

【讨论】:

  • 可以运行。但这是一个完全不同的环境。
【解决方案6】:

你也可以使用cmder

Cmder 是一个软件包,纯粹是出于对 Windows 上没有漂亮的控制台仿真器的失望而创建的。它基于令人惊叹的软件,并加入了 Monokai 配色方案和自定义提示布局,从一开始就看起来很性感

cmder.net

【讨论】:

  • 虽然它似乎带有一个可选的附加包,其中包括常见的 Unix shell 命令,但基本包似乎只是 cmd 的替代品。
【解决方案7】:

我个人使用了这个批处理文件,但它确实需要安装 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原创作品。

【讨论】:

    【解决方案8】:

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

    【讨论】:

      【解决方案9】:

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

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

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

      cmd 窗口中键入“sh”以重定向到 Bourne shell 并在终端中运行您的命令。

      【讨论】:

      【解决方案10】:

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

      【讨论】:

        【解决方案11】:

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

        像这样:

        $ cd app/build
        $ build.sh
        

        【讨论】:

          猜你喜欢
          • 2019-01-11
          • 2017-01-09
          • 2012-07-07
          • 1970-01-01
          • 2021-08-28
          • 2020-06-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多