WSL (Ubuntu):如何从 bash 终端在浏览器中打开 localhost

Mir*_*ław 11 browser windows bash ubuntu windows-subsystem-for-linux

我正在尝试从 WSL bash 终端在(任何)浏览器中打开http://localhost

到目前为止,我已经尝试过:

在建立BROWSER变量XDG-开放没有运气,它响应xdg-open http://localhost/usr/bin/xdg-open: 851: /usr/bin/xdg-open: /c/"Program: not found

我试过用\and转义^。使用%ProgramFiles(x86)%和 ofcorse "Program Files (x86)"。每次或多或少都是相同的答案......任何想法如何设置在WSL中打开浏览器的工作流程?

到目前为止,我已经结束了:

/c/Program\ Files\ \(x86\)/Google/Chrome/Application/chrome.exe localhost

但我正在寻找更优雅的解决方案。

Dam*_*amo 9

你快到了。只需为 windows chrome 可执行文件添加一个别名 http://www.linfo.org/alias.html

alias chrome="/c/Program\ Files\ \(x86\)/Google/Chrome/Application/chrome.exe"
Run Code Online (Sandbox Code Playgroud)

现在,您可以chrome localhost在您想要的任何网络位置简单地运行和打开 chrome。

  • FWIW,我当前的安装需要 /mnt/c 而不是 /c `alias chrome="/mnt/c/Program\ Files\ \(x86\)/Google/Chrome/Application/chrome.exe"` __注意,这很方便,但无法解决运行本机 Linux Chrome 二进制文件的问题.__ (4认同)

gib*_*one 7

您可以从 Bash 调用 Windows 命令行,并使用 Windows 文件关联使用默认的 Windows 浏览器打开 URL。

为此,只需输入 Bash:

cmd.exe /C start http://localhost
Run Code Online (Sandbox Code Playgroud)

在我的情况下,这会localhost在 Chrome 中加载,请注意完整的 URL 是 Windows 决定要做什么所必需的。

这与openMacOS 中的类似,因此您可能会发现直接为命令设置别名并将其用于其他类型的文件很有用:

# add this to .bash_aliases
open='cmd.exe /C start'
Run Code Online (Sandbox Code Playgroud)

现在您可以open URLopen file.pdf直接从 WSL。


注意:由于您只是将命令重定向到cmd.exe,因此它需要有权访问您使用的文件。因此,当您发现自己在 Windows 文件系统中时,上述解决方案将起作用,但当您在 ​​Linux 分区(即在tmp或 在bin文件夹中)处理文件时,可能会失败。这可能在新版本的 WSL 中修复,但我尚未对其进行测试。


小智 6

要从 bash 终端在浏览器中打开 localhost,您需要配置 wsl,使其
默认为在 Windows 10 系统中设置为默认的任何浏览器。

您可以使用 wslu(“WSL 实用程序集合”)中的一些工具来完成此操作。
为此,您需要。

  • wslview (-u, --unregister "将 wslview 删除为默认的 WSL web 浏览器。
    -r, --register "将 wslview 注册为默认的 WSL web 浏览器。)

  • wslpath(-a“强制结果为绝对路径格式”,
    -u“从 Windows 路径转换为 ​​WSL 路径(默认)”)

你需要像这样注册你喜欢的浏览器......
对于谷歌浏览器:
wslview -r $(wslpath -au 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe')

对于 Microsoft Edge:
wslview -r $(wslpath -au 'C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\MicrosoftEdge.exe')

现在,您可以将 localhost 作为x-www-browser localhost:8080或打开,www-browser localhost:8080并且 x-www-browser 或 www-browser 将默认为您当前的 Windows 10 默认浏览器,前提是它已按上述方式注册。
不要忘记指明端口;localhost 本身对我不起作用。

要取消注册任何浏览器,只需将 -r 标志更改为 -u。

看看 wslview 帮助: info wslview <enter> 在 wsl 终端和 wslpath wslpath <enter> 的帮助。


小智 6

安装 wslu(WSL 实用程序集合)https://github.com/wslutilities/wslu#feature,然后将这两行添加到 shell 的 RC 文件中,例如 .bashrc 或 .zshrc。

export DISPLAY=:0
export BROWSER=/usr/bin/wslview
Run Code Online (Sandbox Code Playgroud)


小智 -1

好吧,首先,我不再使用 Windows,所以我无法发布我亲自测试过的完整解决方案,但是当我使用 Windows 时,我经常这样做并且它有效。(这可能应该是一条评论,但不久前我删除了一些未接受的答案并获得了相关的声誉:/)

解决方案:

不要尝试从 WSL 内部启动 Windows 程序,而是安装该程序的 Linux 版本和 X 服务器,例如Xming。以下是在 Windows 上将 X 应用程序转发回 Xming 的示例教程。

总结一下,安装 Xming(在 Windows 上)。然后导出 DISPLAY 变量:

export DISPLAY=:0

在 WSL 中安装 google-chrome 并通过 CLI 启动它。它应该显示在您的桌面上。

注意:还有一种方法可以将 PuTTY 与 XMing 一起使用进行远程查看,但您需要禁用 Windows 防火墙并首先在 WSL 内安装完整的 openssh-server。