4

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

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

html_path - это путь к локальному файлу .html . Таким образом, скрипт открывает браузер, где я обычно могу просматривать и просматривать этот файл.

В отличие от среды MacOS, это не работает в bash из WSL. При запуске сценария ничего не происходит, и когда я выполняю вызов 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 работает внутри bash WSL?


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

4 ответа4

8

Вы можете установить переменную 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 по умолчанию.

2

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

2

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .