从另一个 Windows 应用程序打开 WSL Shell

从另一个 Windows 应用程序打开 WSL Shell

我正在尝试配置 Tower(git 客户端)以启动 wsl bash shell。我尝试了很多方法,但似乎这并不是我想要的。

在此处输入图片描述

我尝试过的:

command:     c:\windows\system32\wsl.exe
parameters:  bash -i

command:     c:\windows\system32\bash.exe
parameters:  -i

command:     c:\windows\system32\cmd.exe
parameters:  /c "bash -i"

command:     c:\windows\system32\bash.exe
parameters:  -i

command:     c:\WINDOWS\System32\windowspowershell\v1.0\powershell.exe
parameters:  wsl bash -i

command:     cmd 
parameters:  /c start start bash -i

command:     C:\Windows\SysWOW64\cmd.exe
parameters:  /c start start bash -i

所有这些都只会在很短的时间内弹出一个控制台窗口,然后返回 Tower。

大多数这些命令都是在资源管理器窗口中运行的......

窗口命令

答案1

要从 32 位进程启动 64 位可执行文件(例如从 Tower 启动 wsl.exe),您需要使用sysnative 文件系统重定向器

在这种情况下,运行:%windir%\sysnative\wsl.exe

您可以先启动 32 位版本的 Cmd,然后在运行对话框 ( Windows+ R) 中执行以下操作来测试这一点:%windir%\SysWoW64\cmd.exe

然后,在 Cmd 实例中,您可以执行以下操作:

%windir%\sysnative\wsl.exe

现在您应该看到 64 位 WSL 附加到同一个控制台实例运行: 在此处输入图片描述

答案2

看起来这个解决方法可以解决问题:

command:    C:\WINDOWS\sysnative\WindowsPowerShell\v1.0\powershell.exe
parameters: wsl bash

它启动一个 64 位 PowerShell 实例,然后加载适用于 Linux 的 Windows 子系统。

也可以看看:

在此处输入图片描述


选择:

我发现的另一种选择是使用wsl-terminal,但由于它依赖于第三方终端和一大堆其他依赖项,所以它宁愿不使用它。

相关内容