Открыть браузер в хост-системе из Windows Subsystem для Linux?

4082
janpio

У меня есть скрипт ruby, который содержит эту строку:

system("open '#'") 

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, и я должен использовать seeили, xdg-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переменную так, чтобы она seeработала внутри bashWSL?


Дополнительный вопрос: если да, как я могу заставить скрипт ruby ​​работать без изменения этого кода? Это внешняя зависимость: /

2

4 ответа на вопрос

6
Florian_1990

Вы можете установить BROWSERпеременную. Существует длинная статья, объясняющая, как устанавливать переменные среды .

Если вы хотите установить переменную для текущего сеанса терминала, вы можете использовать:

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

(при условии, что вы хотите использовать Firefox и установить его в C:\Program Files\Firefox\firefox.exe)

Если вы хотите, чтобы это сохранялось, вы не можете добавить вышеуказанную строку в файл ~/.bashrc.

4
Elizabeth Hou

По некоторым причинам WSL может видеть проводник Windows. Если вы делаете:

explorer.exe Preview.html

в консоли он должен открыться в веб-браузере Windows по умолчанию.

2
Yehonathan Sharvit

Комбинируя два ответа выше, самое простое решение - установить BROWSER для проводника Windows, чтобы использовать веб-браузер Windows по умолчанию.

export BROWSER='/mnt/c/Windows/explorer.exe' 
1
Pawel Zubrycki

Установите WSLU и используйте 'BROWSER = wslview'

Похожие вопросы