我在 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
答案3
这可能是可能的:
~/.bash_aliases
在或中定义别名或函数~/.bashrc
为命令名,如win
或windows
。输入我们的新命令将会在 Windows 可访问的某个文件夹中创建一个文本文件。
创建一个在后台运行的批处理脚本。此脚本将在创建文本文件时执行其中的命令(我们新创建的命令的参数将重定向到该文件),然后将其删除。
我没有更新,所以目前无法提供脚本。
答案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