从Windows PowerShell运行bash脚本

wso*_*son 38 bash powershell

在cygwin中,我可以执行./script.sh args,但这会在PowerShell中的记事本中打开脚本文件.

执行它需要做什么?

The*_*sai 26

你应该把脚本作为你运行的*NIX shell的参数,相当于*NIXish

sh myscriptfile
Run Code Online (Sandbox Code Playgroud)

  • 对接受的答案的一个警告是,"sh"不包含在香草Powershell中.我不得不安装Git,它可以选择在Powershell中的`PATH`中添加一些UNIX工具,`sh.exe`就是其中之一. (30认同)
  • 这不是一个真正的答案,因为这需要你安装一些东西,这在答案中没有提到. (26认同)
  • 真?我得到术语'sh'不被识别为cmdlet,函数,脚本文件或可操作程序的名称. (19认同)
  • 这并不能解决该问题,因为您必须安装另一个软件才能使其正常工作:-(。 (5认同)
  • 你可以通过只输入 `sh` 来进入 NIX shell,然后你可以在那里运行 unix/linux 命令 xD。 (2认同)

Mar*_*edi 23

Windows 10上现在有一个"本机"解决方案,在Windows上启用Bash后,您可以通过输入bash以下命令输入Bash shell : Windows上的Bash

您可以运行Bash脚本bash ./script.sh,但请记住C驱动器位于/mnt/c,并且外部硬盘驱动器不可安装.因此,您可能需要稍微更改脚本,以便与Windows兼容.

此外,即使如此root,您仍然可以在移动文件时获得权限被拒绝/mnt,但您root/文件系统中拥有全部功能.

还要确保您的shell脚本使用Unix样式格式化,否则可能会出错. 示例脚本

  • 它在普通的“PowerShell”中不起作用。也许,还有一些您没有提到的先决条件? (2认同)
  • @Dr_Zaszuś 正如答案中提到的,您首先需要在 Windows 上启用 Bash。多年来,执行此操作的确切步骤已经发生了变化,但截至发表此评论时,我相信您所需要做的就是在控制面板中启用 WSL,然后从 Microsoft Store 下载发行版。 (2认同)

Ryn*_*ant 9

如果将扩展添加.SH到环境变量PATHEXT,则只能使用带参数的脚本名称,从PowerShell运行shell脚本:

PS> .\script.sh args
Run Code Online (Sandbox Code Playgroud)

如果将脚本存储在PATH环境变量中包含的目录中,则可以从任何位置运行它,并省略扩展名和路径:

PS> script args
Run Code Online (Sandbox Code Playgroud)

注意:sh.exe或其他*nix shell必须与.sh扩展名关联.

  • 对于希望执行此操作的非 PowerShell 用户,如何正确更新 PowerShell `PATH` 变量? (2认同)
  • Powershell使用与所有其他程序使用的相同的环境变量.如果在Windows开始菜单中键入"系统环境",则应该会看到一个控制面板选项,用于编辑环境变量. (2认同)

小智 9

也可以通过导出Windows Server 环境变量的 Advance 部分中的bash and shgitbash来运行C:\Program Files\git\bin\

在路径VAR部前进亲切添加C:\Program Files\git\bin\这将使bashsh该混帐的bash的是从可执行文件window cmd

然后,

运行 shell 文件作为

bash shellscript.sh 或者 sh shellscript.sh