从Windows Subsystem for Linux打开主机系统中的浏览器?


9

我有一个包含这一行的ruby脚本:

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

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

与MacOS环境相比,这在bashWSL中不起作用。运行脚本没有任何反应,当我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变量,以便seebashWSL 内部工作吗?


奖金问题:如果是,如何在更改代码的情况下使ruby脚本正常工作?这是一个外部依赖:/

Answers:


12

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

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

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

(假设您要使用Firefox并安装它C:\Program Files\Firefox\firefox.exe

如果您希望这是持久性的,可以将上面的行添加到文件中~/.bashrc


4

出于某种原因,WSL可以看到Windows文件浏览器。如果你这样做:

explorer.exe Preview.html

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



2

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

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

我喜欢这个想法,但是当我打电话给xdg-open https://www.google.com我的Firefox for Windows时,用google打开两个标签,而我执行时只有一个标签explorer.exe https://www.google.com。关于如何通过xdg-open只获得一个标签的任何想法?
Holger
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.