在 Windows 上从 Ubuntu 运行 Windows 应用程序

在 Windows 上从 Ubuntu 运行 Windows 应用程序

我在 Windows 上的 Ubuntu 上使用 bash。我导航到一个文件夹,然后从那里在 Windows 程序中打开一个文件。

例如:输入后

cd \mnt\c\Users\myusername\Desktop
notepad index.php

我希望 Windows 上的记事本index.php从我的桌面打开该文件。

这可能吗?如果不可能,是否有可能编写一个程序来实现这一点?如何操作?

答案1

现在你可以从 WSL 调用 Windows 应用程序,既来自 Linux 脚本,也来自控制台。

  • 从 Windows 10 build 17063+ 开始,Linux 和 Windows 都可以共享环境变量。
  • 默认情况下,Windows 共享PATH。如果notepad在 Windows 路径中,您可以在 Linux 中通过在命令行中调用该程序来运行它。
  • 您可以控制 Windows 和 Linux 之间共享哪些变量。有一个WSLENV变量定义了变量如何共享。

注意从 Windows 修改 Linux 文件可能会产生更新权限和其他元数据的错误. Linux 的文件权限存储为(元数据)位于 NTFS 文件中。Windows 程序可能会在不经意间覆盖(或损坏)该数据。

  • 微软建议将共享文件存储在 Windows 文件系统中,例如,从 linux 创建符号链接。
  • 您可以在WSL 问题报告

答案2

目前还不可能,但这是UserVoice 上最需要的功能

微软的反应:

我们听到了您的声音——这是一个常见的要求,我们将在未来的版本中进行探索。

答案3

这可能是可能的:

  1. ~/.bash_aliases在或中定义别名或函数~/.bashrc为命令名,如winwindows

  2. 输入我们的新命令将会在 Windows 可访问的某个文件夹中创建一个文本文件。

  3. 创建一个在后台运行的批处理脚本。此脚本将在创建文本文件时执行其中的命令(我们新创建的命令的参数将重定向到该文件),然后将其删除。

我没有更新,所以目前无法提供脚本。

答案4

我认为这是不可能的。Windows
上的 Ubuntu 上的 Bash 不是 Windows 命令行,因此它无法识别 Windows 命令。
请尝试nano index.php一下。

但是,如果您想要 GUI,您可以在 Windows 上安装并运行 XMing Server,export DISPLAY=localhost:0.0然后安装 gedit。这样它就可以使用 GUI 执行。但它仍然不是 notepad.exe。除非我们能找到对子系统文件的访问权限,否则这是不可能的。

另一种方法是将文件复制到 C 盘并从 Windows 访问。为此,请尝试以下操作cp index.php /mnt/c

相关内容