🏋️♀️
[wsl] gh auth loginできない____ウザくね?
Summary(概要)
WSLで gh auth login 叩いたら「ブラウザ開きます?」って聞かれて、Enter押した瞬間にエラーで落ちるアレ。
xdg-open,x-www-browser,www-browser,wslview のどれも入ってないせいで、勝手にブラウザを開けないのが原因_____
毎回URLをコピーするのもダルいし上手いこといかんから、サクッと解決したメモを残しておくぅ。※ ref
※ もう最近はgit/gh操作もAI Agentがどうのこうするから
PATとかでつまづくのだるいよなぁ~~?だるいと思う!!!
一つ一つクリアしていこう!
Symptoms at a Glance(ざっくり症状)
$ gh auth login
? What account do you want to log into? GitHub.com
? What is your preferred protocol for Git operations on this host? HTTPS
? Authenticate Git with your GitHub credentials? Yes
? How would you like to authenticate GitHub CLI? Login with a web browser
! First copy your one-time code: XXXX-YYYY
Press Enter to open github.com in your browser...
! 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
Enter押してもブラウザが開かないので、手でURL開くハメになる。
毎回これやるの面倒すぎ!!(そしてうまく行きません)
Solution(解決策)
Part1(wslu を入れて wslview を使えるようにする)
wslview が使えると、WSLからWindows側の既定ブラウザが呼び出せる。
wslu パッケージに含まれてるので、これだけ入れておけばOK。
sudo apt update -y
sudo apt install wslu -y
これで wslview コマンドが生えるので、再度 gh auth login をすると Enter でちゃんとブラウザが開くようになる。
手元のWindows側ブラウザで GitHub のデバイス認証ページが勝手に開く → コード入力 → 完了、のいつもの流れ。
Part2(環境変数で回避)
以下コマンドで回避
BROWSER=/mnt/c/Windows/explorer.exe gh auth login
※ export BROWSER=/mnt/c/Windows/explorer.exeを~/.bashrcに記載したほうがよさげ💡
とりま、下記の人はやったらいいと思う(勝手に_______)
-
wsluは開発終了しているので躊躇する(「それofそれ」な意見) - ubuntuに余計なもの入れたくない人
- できるだけ軽い仮想マシンでいたい人
- 変な人
Reference(参考)
- WSL2-gh auth login doesn't launch browser #2422 - part1
- WSL2-gh auth login doesn't launch browser #2422 - part2
- wslu(wslview 提供)
Conclusion(まとめ)
-
gh auth loginでブラウザが開かないのは xdg-open 系がないから。- 元から入れといてくれてええやんけどな________
-
sudo apt install wsluで wslview を入れておけば Enter でWindows側ブラウザが開く。 - 手動でURL開くのもアリ(いやナシすぎる)だけど、毎回やるのはウザいので wslu を入れてしまうのが楽。
- wsl内でgh使うんならハナからwsluもセットでインストールしとけばええ
-
sudo apt install -y gh wslu<- 大事とちゃうか?
-
Discussion
wslu開発終了してしまったんですよね。
私は以下の設定にしています。
ありがとうございます!
確かに開発終了してしまったものをコンピュータに入れるのは躊躇しますよね💦
👆この方法は知らなかったです!
情報共有ありがとうございました(⌒∇⌒)