我想很多人在 Windows 11 上的 WSL2 裡安裝 Ubuntu 等 Linux 來建置開發環境吧(很方便對吧)。
在這種情況下,瀏覽器的使用方式會因人而異。
特別是後者,在使用 CLI 工具進行驗證時,會有一些容易卡住的地方。本文將介紹這個問題的解決方法,以及進一步應用到更方便的 Windows 整合工具。
在 Linux 端使用 GitHub CLI 等工具時,若嘗試以 gh auth login 這類方式進行瀏覽器驗證,可能會顯示如下訊息。
! First copy your one-time code: XXXX-XXXX
Press Enter to open https://github.com/login/device in your browser...
這時即使乖乖按下 Enter 鍵,瀏覽器也不會啟動(因為 Linux 端沒有安裝),而是可能會輸出如下錯誤。
! Failed opening a web browser at https://github.com/login/device
exec: "xdg-open,x-www-browser,www-browser,wslview": executable file not found in $PATH
這是因為 Linux 端找不到用來開啟 URL 的標準指令(如 xdg-open),而且也無法把處理轉交給 Windows 端的瀏覽器所導致。
這時很有幫助的就是 wslu 套件。安裝它之後,就能把 WSL2 端「開啟 URL」的指令轉接到 Windows 端的預設應用程式。
以 Ubuntu 來說,可以使用 apt 指令輕鬆安裝。
sudo apt update
sudo apt install wslu -y
安裝後會多出 wslview 這個指令。許多 CLI 工具會硬編碼尋找 xdg-open,因此為了確保能確實把處理轉過去,建議建立符號連結。
# 如果根本沒有 xdg-open,就先安裝
sudo apt install xdg-utils
# 接著先備份既有的 xdg-open
sudo mv /usr/bin/xdg-open /usr/bin/xdg-open.bak
# 將 wslview 連結成 xdg-open
sudo ln -s /usr/bin/wslview /usr/bin/xdg-open
有些工具會參考環境變數 BROWSER,因此建議在 shell 的設定檔(如 ~/.bashrc)中加入以下內容,這樣就更完善了。
export BROWSER=wslview
重新載入設定(例如 source ~/.bashrc)之後,從前面的 gh auth login 開始,就能無縫地在 Windows 端啟動瀏覽器了(Congratulations, you're all set!)。
wslview 轉交到 Windows 端的是 Windows 的「預設瀏覽器」。
如果在這裡設定好像 Browser Tamer 這類的瀏覽器路由器(分流工具),那麼當 WSL2 上執行的應用程式要啟動瀏覽器時,也能享受到它的好處。
只要先在 Windows 端設定好這類規則,就算是從 WSL2 啟動瀏覽器,也能避免切錯設定檔(或避免發生文件無法開啟之類的問題),工作效率也會大幅提升。
為了讓 WSL2 這個隔離的開發環境,與 Windows 的瀏覽器加上日文輸入輸出環境能夠無痛串接,請務必活用 wslu。