如何从 WSL(Ubuntu)Bash 运行 Windows 可执行文件

2024-10-29 08:35:00
admin
原创
71
摘要:问题描述:随着2016 年夏季Windows 10 周年更新的推出,人们可以在新的“轻量级”虚拟化子系统Windows Linux 子系统 (WSL)中运行ubuntu二进制文件。不幸的是,启动C:WindowsSystem32ash.exe另一个bashELF 二进制文件会启动 WSL 内部的一个进程,您...

问题描述:

随着2016 年夏季Windows 10 周年更新的推出,人们可以在新的“轻量级”虚拟化子系统Windows Linux 子系统 (WSL)中运行ubuntu二进制文件。

不幸的是,启动C:WindowsSystem32ash.exe另一个bashELF 二进制文件会启动 WSL 内部的一个进程,您无法从中退出!您只能启动其他 ELF 二进制文件。

那么我怎样才能*.exe从 Windows Bash 执行文件?[1]

[1]微软“官方” GH 支持 repo中也提出了这个问题。


解决方案 1:

在Windows 10 Creators Update(版本 1703,2017 年 4 月)中,此功能已得到原生支持。因此,您现在可以从 Linux 运行 Windows 二进制文件...

notepad.exe或任何其他.exe(需要扩展,并且需要位于您的路径上,某些旧版本需要完整路径)

...反之亦然,使用下列方法之一:

  • bash.exe -c command_to_runIE:bash.exe -c ls

  • bash -c command_to_runIE:bash -c ls

  • wsl command_to_run即:wsl "ls";或者使用以下命令指定您想要使用的发行版:

    • ubuntu run ls

欲了解更多信息,请参阅上面链接的文章。

解决方案 2:

原生解决方案

Windows 10 Insider Preview 更新(14951)提供的官方解决方案基于几乎被遗忘的binfmt_msc Linux 工具,用于启动二进制文件。binfmt_misc的注册命令如下(win-executables 的/init临时binfmt_misc “解释器”在哪里):

sudo echo ":WSLInterop:M::MZ::/init:" > /proc/sys/fs/binfmt_misc/register

然后 win-executable 就会像常规程序一样启动:

$ export PATH=$PATH:/mnt/c/Windows/System32
$ notepad.exe
$ ipconfig.exe | grep IPv4 | cut -d: -f2
$ ls -la | findstr.exe foo.txt
$ cmd.exe /c dir

并不是说任何 win 可执行文件都必须驻留在 windows(DrvFs)文件系统中 - 而不是 Linux 的文件系统(VolFs)中 - 为了继承正确的Windows工作目录。

cbwin替代方案

在你获得最新版本之前,项目cbwin提供了一种解决方法,即在 WSL 中安装 3 个新的 Linux 命令:

  • wcmd:通过 调用 win-executable cmd.exe

  • wrun:使用 同步调用 win 可执行文件CreateProcess,并等待死亡(不使用cmd.exe)。

  • wstart:启动一个分离的(异步)命令(使用cmd.exe)。

为了使用它们,您必须:

  1. 安装cbwin

* 一个新的`outbash.exe`将安装在您的常规 Windows 文件系统中(在您的某个位置`%PATH%`),加上
* WSL 文件系统中的 3 个 linux 命令。
  1. 使用它outbash.exe(无论你在哪里安装它)来启动 WSL,而不是C:WindowsSystem32ash.exe

  2. 在任何 win-executables 前面加上其中一个命令,例如wrun notepad

提示:如果可执行文件随其一起启动wcmd或者wrun产生了任何子项,那么这些子项只会在该可执行文件存活期间存活。

换句话说,尝试notepad.exewcmd不工作的方式启动,因为记事本在启动后就会被杀死——在这种情况下使用wrun(同步)或wstart(异步)。

解决方案 3:

为什么不直接使用

$ powershell.exe Start filename

Start是 Windows 上与xdg-open大多数 Linux 或openmacOS 上的等价物,意思是“使用默认桌面应用程序打开”。我喜欢将其别名为 open。

解决方案 4:

我使用别名。

alias aws="/mnt/c/Program Files/Amazon/AWSCLIV2//aws.exe"
alias kubectl="/mnt/c/ProgramData/chocolatey/bin/kubectl.exe"
alias kubectx="/mnt/c/ProgramData/chocolatey/bin/kubectx.exe"
alias kubens="/mnt/c/ProgramData/chocolatey/bin/kubens.exe"
alias pytest=pytest.exe

解决方案 5:

虽然.exe从命令行运行 可以,但从 PHP 运行 时却exec()无法让它工作。/init但是,添加 可以工作。这是我/usr/local/bin/convert在 Windows 上安装的 GraphicsMagick 的工作文件:

#!/bin/sh
/init "$(ls /mnt/c/Program*/GraphicsMagick*/gm.exe|tail -1)" convert "$@"

解决方案 6:

我对此有点困惑。我添加了一个符号链接:

$ ls -l /c                                                                                               
lrwxrwxrwx 1 root root 5 Dec  3 10:24 /c -> mnt/c  

现在 ls /c 给出的结果与 ls /mnt/c 相同

但是现在:/c/Program\ Files/Java/jdk1.8.0_211/bin/java.exe -version ==> 没有

然而:

/mnt/c/Program Files/Java/jdk1.8.0_211/bin/java.exe  -version 
java version "1.8.0_211"                                                                                                Java(TM) SE Runtime Environment (build 1.8.0_211-b12)                                                                   Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode) 

其他 Windows 可执行文件也发生了同样的事情。WSL 在实现符号链接时是否存在错误?

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   681  
  在项目管理领域,集成产品开发(IPD)流程以其高效、协同的特点,被众多企业视为提升产品竞争力的关键。IPD流程强调跨部门、跨职能的紧密合作,以确保产品从概念到市场各个环节的无缝衔接。然而,实现这一目标并非易事,它需要企业深刻理解并掌握IPD流程中的跨部门协作艺术。本文将深入探讨IPD流程中跨部门协作的三个关键点,旨在为...
IPD项目管理咨询   9  
  掌握IPD流程图:提升团队协作的关键路径在当今快速变化的商业环境中,团队协作的效率与效果直接关系到项目的成功与否。集成产品开发(Integrated Product Development,简称IPD)作为一种先进的研发管理理念,通过跨部门、跨领域的协同工作,能够显著提升产品开发的速度与质量。而IPD流程图,则是这一理...
IPD流程阶段   9  
  IPD流程概述:理解其核心价值与实施背景集成产品开发(Integrated Product Development,简称IPD)是一种先进的产品开发管理理念,它强调跨部门协作、市场导向和快速响应变化的能力。IPD流程不仅关注产品本身的技术创新,更注重将市场、研发、生产、销售等各个环节紧密集成,以实现产品从概念到市场的高...
华为IPD是什么   7  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程以其跨部门协作、高效决策和快速响应市场变化的特点,被众多企业视为提升竞争力的关键。然而,实践IPD流程并非易事,项目管理中的种种错误往往阻碍了其效果的充分发挥。本文旨在深入探讨如何在实施IPD流程时避免这些常见错误,...
IPD框架   7  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用