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

时间:2018-10-07 18:58:23

标签: windows bash ubuntu browser windows-subsystem-for-linux

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

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

为xdg-open设置BROWSER变量没有运气,它会以xdg-open http://localhost响应/usr/bin/xdg-open: 851: /usr/bin/xdg-open: /c/"Program: not found

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

到目前为止,我最终得到了:

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

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

7 个答案:

答案 0 :(得分:1)

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

alias chrome="/c/Program\ Files\ \(x86\)/Google/Chrome/Application/chrome.exe"

现在,您只需运行chrome localhost并在所需的任何网站上打开chrome。

答案 1 :(得分:1)

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

要这样做,只需输入Bash:

cmd.exe /C start http://localhost

在我的情况下,这会在Chrome中加载localhost,请注意,完整的URL对于Windows决定执行操作是必需的。

这与open在MacOS中的操作类似,因此您可能会发现直接别名该命令并将其用于其他类型的文件很有用:

# add this to .bash_aliases
open='cmd.exe /C start'

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

答案 2 :(得分:1)

您可以像以前一样设置 BROWSER 变量。但是 xdg-open 在 WSL 中不起作用,因为 xdg-open脚本被设置为使用不带引号的环境变量(在这种情况下, 由于路径名中的空格导致路径中断).

您可以使用 wsl-opennpm 实用程序对 WSL 执行相同的操作。

安装 npm 后,安装 wsl-open 实用程序:

sudo npm install -g wsl-open

使用默认的 Windows 浏览器打开任何 URL :

wsl-open http://google.com

您还可以将 wsl-open 设置为 WSL 中文件类型的默认程序:

wsl-open -w // sets wsl-open as the Shell Browser

然后你可以使用标准的 xdg-open 来处理 URL 以及默认的 Windows 浏览器:

xdg-open http://google.com 

答案 3 :(得分:0)

好吧,首先,我不再使用Windows,所以我无法发布经过我个人测试的完整解决方案,但是回到我确实使用Windows的时候,我就这样做了,并且奏效了。 (这可能应该是评论,但不久前,我删除了一些不可接受的答案,并赢得了许多相关声誉:/)

解决方案:

请勿尝试从WSL内部启动Windows程序,而应安装程序的Linux版本和X服务器,例如XmingHere is an example tutorial用于在Windows上将X应用转发回Xming。

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

export DISPLAY=:0

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

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

答案 4 :(得分:0)

我创建了一个脚本,该脚本基本上将xdg-open转发到powershell -c start

虽然测试不多。

sudo tee /usr/local/bin/xdg-open <<EOF
#!/bin/sh

powershell.exe -c start "'\$@'"
EOF
sudo chmod +x /usr/local/bin/xdg-open

欢呼 奥利弗

答案 5 :(得分:0)

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

您可以使用wslu(“ WSL实用程序的集合”)中的一些工具来做到这一点。
为此,您需要。

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

  • wslpath(-“强制结果为绝对路径格式”,
            -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')

现在,您可以使用x-www-browser localhost:8080www-browser localhost:8080来打开localhost,并且x-www-browser或www-browser将默认为您当前的Windows 10默认浏览器,前提是已如上所述进行了注册。
不要忘记指出端口;仅本地主机对我不起作用。

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

在wsl终端中查看wslview帮助:info wslview <enter>wslpath <enter>获得wslpath的帮助。

答案 6 :(得分:0)

通过这篇文章对我有用: https://towardsdatascience.com/running-jupyter-notebook-on-wsl-while-using-firefox-on-windows-5a47ebfae4c1

简而言之:

步骤1-为Jupyter Notebook生成配置:

jupyter notebook --generate-config

步骤2-使用“ nano”或其他编辑器编辑配置文件

配置文件应该位于您的主目录下的“ .jupyter”文件夹下:

~/.jupyter/jupyter_notebook_config.py

第3步-通过重定向文件禁用启动浏览器

首先注释掉该行,然后将True更改为False:

c.NotebookApp.use_redirect_file = False

第4步-在.bashrc文件中添加一行以设置浏览器路径

export BROWSER='/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe'

对我来说,它是Windows程序文件下的Chrome。否则,WSL下的任何Linux安装都不会启动本机浏览器,因此需要将其设置为Windows可执行文件。

第5步-重新启动.bashrc

source .bashrc

应该可以!