1

我试图从Visual Studio 2015的构建版命令行运行Windows 10 Linux子系统。也就是说,我有一个命令,其输出将被传送到bash,例如xyz | bashbash应该依次启动Windows 10 Linux子系统并执行该命令。从Visual Studio的构建后命令行运行Linux子系统

从常规的CMD.exe命令行或.bat文件运行命令时,此功能完美。然而,在Visual Studio 2015年后,前期建设 - 或预链路事件命令行直接,通过call cmd /C呼叫或外部.bat文件代理运行这个时候,这个失败,错误代码255并打印出“找不到”命令'bash'。“。当尝试使用bash.exe的完整路径时,也会失败。

如何从Visual Studio的命令行运行bash

旁注:我想在C/C++项目上运行这个。

+0

你知道的事实,你可以_accept_堆栈溢出的答案? – m93a

+1

@ m93a哦,对不起,我忘了这个问题,因为解决这个问题只是导致了一个不同的问题... – HerpDerpington

+0

什么问题?如果它与bash相关,也许我可以提供帮助。 – m93a

回答

2

从我的32位C++应用程序中使用bash时,我也遇到了这个问题。

问题是bash只有64位 - 当您尝试从32位应用程序使用它时,您拨打C:\Windows\System32\bash.exe会被重定向到不存在的C:\Windows\SysWOW64\bash.exe

要绕过重定向,您必须使用C:\Windows\Sysnative\bash.exe从32位应用程序调用bash。我实际上做了一批(.bat)代理,我将其添加到PATH以使事情更容易。

bash.bat:

@echo off 

if exist "C:\Windows\Sysnative\bash.exe" (
    C:\Windows\Sysnative\bash.exe %* 
) else (
    C:\Windows\System32\bash.exe %* 
)