从适用于 Linux 的 Windows 子系统在主机系统中打开浏览器?

从适用于 Linux 的 Windows 子系统在主机系统中打开浏览器?

我有一个 ruby​​ 脚本,其中包含以下行:

system("open '#{html_path}'")

html_path是本地文件的路径.html。因此,脚本会打开一个浏览器,我通常可以在其中检查和查看此文件。

与 MacOS 环境不同,这在 WSL 中不起作用bash。运行脚本没有什么发生了,当我open直接在控制台中执行调用时,我得到了以下信息:

sujan@LenovoX1:/mnt/c/Users/Jan/Documents/foo$ open Preview.html
Couldn't get a file descriptor referring to the console

我已经调查过了open在 Ubuntu 上有所不同我应该使用seexdg-open来打开一个文件。

不幸的是,这些在 WSL 中也不起作用:

sujan@LenovoX1:/mnt/c/Users/Jan/Documents/foo$ see ./Preview.html
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE (.*?)}/ at /us
r/bin/see line 528.
Couldn't find a suitable web browser!
Set the BROWSER environment variable to your desired browser.
Warning: program returned non-zero exit code #1

sujan@LenovoX1:/mnt/c/Users/Jan/Documents/foo$ xdg-open ./Preview.html
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE (.*?)}/ at /us
r/bin/run-mailcap line 528.
Couldn't find a suitable web browser!
Set the BROWSER environment variable to your desired browser.
Warning: program returned non-zero exit code #1
/usr/bin/xdg-open: 771: /usr/bin/xdg-open: www-browser: not found
/usr/bin/xdg-open: 771: /usr/bin/xdg-open: links2: not found
/usr/bin/xdg-open: 771: /usr/bin/xdg-open: elinks: not found
/usr/bin/xdg-open: 771: /usr/bin/xdg-open: links: not found
/usr/bin/xdg-open: 771: /usr/bin/xdg-open: lynx: not found
/usr/bin/xdg-open: 771: /usr/bin/xdg-open: w3m: not found
xdg-open: no method available for opening './Preview.html'

仔细想想,这是有道理的:WSL 内部没有可用的浏览器。

我能以某种方式设置这个BROWSER变量以便在 WSLsee内部工作吗?bash


附加问题:如果是,我该如何让 ruby​​ 脚本工作没有更改该代码?这是一个外部依赖项 :/

答案1

安装西弗吉尼亚大学并添加export BROWSER=wslview到你的$HOME/.bashrc(或等效的,如果你使用其他 shell)

答案2

您可以设置BROWSER变量。有一个长篇文章解释如何设置环境变量

如果您想为当前终端会话设置变量,您可以使用:

export BROWSER='/mnt/c/Program Files/Firefox/firefox.exe'

(假设您想使用 Firefox 并且已将其安装在C:\Program Files\Firefox\firefox.exe

如果你想执着的,您可以将上述行添加到文件中~/.bashrc

答案3

由于某种原因,WSL 可以看到 Windows 文件资源管理器。如果你这样做:

explorer.exe Preview.html 

在控制台中它应该在默认的 Windows 网络浏览器中打开。

答案4

结合以上两个答案,最简单的解决方案是将 BROWSER 设置为 Windows 文件资源管理器,以便使用默认的 Windows Web 浏览器

export BROWSER='/mnt/c/Windows/explorer.exe'

相关内容