Abra o navegador no sistema host do Windows Subsystem para Linux?

2

Eu tenho um script ruby que contém esta linha:

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

html_path é o caminho para um arquivo .html local. Então o script abre um navegador onde eu normalmente posso inspecionar e ver este arquivo.

Em contraste com um ambiente MacOS, isso não funciona em bash da WSL. Executando o script nothing acontece, e quando eu executo a chamada open no console diretamente eu recebo isto:

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

Eu já investiguei que open faz algo diferente no Ubuntu e eu deveria usar see ou xdg-open para abrir um arquivo.

Infelizmente, isso também não funciona na 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

e

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'

Pensando nisso, isso faz sentido: não há navegador disponível dentro da WSL.

Posso de alguma forma definir essa variável BROWSER , então see funciona dentro de bash da WSL?

Pergunta bônus: Se sim, como posso fazer o script ruby funcionar sem alterar esse código? É uma dependência externa: /

    
por janpio 27.10.2017 / 14:23

4 respostas

5

Você pode definir a variável BROWSER . Existe um longo artigo explicando como definir variáveis de ambiente .

Se você quiser definir a variável para a sessão de terminal atual, você pode usar:

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

(supondo que você queira usar o Firefox e instalá-lo em C:\Program Files\Firefox\firefox.exe )

Se você quiser persistente , não é possível adicionar a linha acima ao arquivo ~/.bashrc .

    
por 06.11.2017 / 18:48
4

Por algum motivo, o WSL pode ver o explorador de arquivos do Windows. Se você fizer:

explorer.exe Preview.html

no console, ele deve abrir no navegador da web padrão do Windows.

    
por 25.04.2018 / 22:38
2

Combinando as duas respostas acima, a solução mais simples é configurar o BROWSER para o Windows File Explorer, a fim de usar o navegador web padrão do Windows

export BROWSER='/mnt/c/Windows/explorer.exe'
    
por 25.08.2018 / 21:43
0

Instale o WSLU e use 'BROWSER = wslview'

    
por 22.10.2018 / 12:54