【问题标题】:Run bash script from Windows PowerShell从 Windows PowerShell 运行 bash 脚本
【发布时间】:2010-11-09 02:03:36
【问题描述】:

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

我需要做什么才能让它执行?

【问题讨论】:

  • 我想知道为什么您希望 *nix-ish 脚本在 Powershell 中运行...它们具有完全不同的命令集和脚本语法(此外,powershell 脚本需要 .ps1 扩展名 AFAIK)。您可以发布 bash 脚本,有人可能会帮助您使用 powershell 版本。
  • 因为:它有效。查看已接受的答案。

标签: bash powershell


【解决方案1】:

现在在 Windows 10 上有一个“原生”的解决方案,在 Windows 上启用 Bash 后,你可以通过输入 bash 进入 Bash shell:

你可以像bash ./script.sh一样运行Bash脚本,但要记住C盘位于/mnt/c,外接硬盘是不可挂载的。因此,您可能需要稍微更改脚本以使其与 Windows 兼容。

此外,即使是root,在/mnt 中移动文件时,您仍然可以拒绝权限,但您在/ 文件系统中拥有完整的root 权力。

还要确保您的 shell 脚本采用 Unix 样式格式化,否则可能会出现错误。

【讨论】:

  • @destoryer 不,这不是谎言。我每天都使用它,效果很好。微软确实做了很多重大的改变,如果你现在重新安装,它可能会有点不同。我仍在“旧版”安装中,所以我的看起来仍然像我在答案中显示的那样。无论如何,您现在可以从 Microsoft Store 下载 Ubuntu:microsoft.com/store/productId/9N9TNGVNDL3Q
  • 它在原版 PowerShell 中不起作用。也许,还有一些你没有提到的先决条件?
  • @Dr_Zaszuś 如答案中所述,您首先需要在 Windows 上启用 Bash。多年来,执行此操作的确切步骤发生了变化,但截至本文发表时,我相信您需要做的就是在控制面板中启用 WSL,然后从 Microsoft Store 下载发行版。
  • 如果您想在外置硬盘上运行 bash,只需执行以下简单步骤:askubuntu.com/a/1116220/957855
【解决方案2】:

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

sh myscriptfile

【讨论】:

  • 真的吗?我得到 'sh' 一词未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。
  • 对已接受答案的警告是 sh 不包含在 vanilla Powershell 中。我必须安装 Git,它可以选择将一些 UNIX 工具添加到 Powershell 中的 PATHsh.exe 就是其中之一。
  • 你可以只输入sh进入NIX shell,然后你可以运行unix/linux命令xD。
  • 不是一个真正的答案,因为这需要您安装一些东西,而答案中没有提到。
  • 这并不能解决这个问题,因为您必须安装另一个软件才能使其正常工作:-(.
【解决方案3】:

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

PS> .\script.sh args

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

PS> script args

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

【讨论】:

  • 对于想要执行此操作的非 PowerShell 用户,如何正确更新 PowerShell PATH 变量?
  • Powershell 使用所有其他程序使用的相同环境变量。如果您在 Windows 开始菜单中键入“系统环境”,您应该会看到一个用于编辑环境变量的控制面板选项。
【解决方案4】:

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

请在路径 var 的 Advance 部分添加 C:\Program Files\git\bin\,这将使 git-bash 的 bashsh 可以从 window cmd 执行。

那么,

运行shell文件为

bash shellscript.shsh shellscript.sh

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多