カピバラ好きなエンジニアブログ

興味ある技術とか検証した内容を赴くままに書いていきます。カピバラの可愛さこそ至高。

WSLでcodeコマンドが使えない場合の対処法

久々に使おうとしたら使えなくなっていたので、対処方法を書いておきます。
調べた感じだと人によって原因が違うようなので、あくまで一つの対処方法としてご覧ください。



目次

てっとり早く知りたい人向け

以下のコマンドでcodeコマンドのパスが表示されなければ、

$ which code


シンボリックリンクを手動で作成する。(VS Codeのインストールパスは自身の環境のものに修正が必要)

$ sudo ln -s '/mnt/c/Users/[ユーザー名]/AppData/Local/Programs/Microsoft VS Code/bin/code' /usr/local/bin/code
$ which code
/usr/local/bin/code



事象

wsl環境でcodeコマンドを実行したところ、コマンドが見つからないというメッセージが出力されました。
※キャプチャを取り忘れたのでメッセージの一部だけ貼ります

$ code .
Command 'code' not found,

VS CodeのWSL拡張のアンインストール、インストールも試してみましたがダメでした。

対処方法

以下の記事を参考に確認していきました。 zenn.dev

①wsl上でcodeコマンドの有無の確認

whichコマンドでcodeコマンドのパスを確認しようとしましたが、記事にあるような「/usr/local/bin/code」は表示されませんでした。
多分これが原因のようです。

$ which code



Windows側の環境変数からVS Codeのインストール場所を確認

PowerShellで以下のコマンドを実行して、VS Codeのパスを確認します。

PS > echo $env:PATH
C:\Users\[ユーザー名]\AppData\Local\Programs\Microsoft VS Code\bin;



windows側のcodeコマンドのパスを確認

②で確認したパスを元にcodeコマンドのフルパスを確認します。

PS > ls "C:\Users\[ユーザー名]\AppData\Local\Programs\Microsoft VS Code\bin\code"


    ディレクトリ: C:\Users\[ユーザー名]\AppData\Local\Programs\Microsoft VS Code\bin


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2024/08/07     21:02           2001 code



④wsl上でシンボリックリンクを手動で作成

③で確認したcodeコマンドのフルパスを元に、wsl上でシンボリックリンクを作成します。
このとき、Windows側のファイルパスをwsl側から参照するために、パスの形式を修正しておきます。

$ sudo ln -s '/mnt/c/Users/[ユーザー名]/AppData/Local/Programs/Microsoft VS Code/bin/code' /usr/local/bin/code



⑤codeコマンドの確認と実行

シンボリックリンク作成後、ターミナルの再起動などは不要ですぐにcodeコマンドが利用できるようになります。

$ which code
/usr/local/bin/code

VS Codeで開きたいパスに移動し、codeコマンドを実行すると無事VS Codeが立ち上がりました。

$ cd [VS Codeで開くパス]
$ code .



感想及び所感

調べてみたら意外と同じような事象が起きている人が多かったので、せっかくなので対処方法を書いてみました。
何故codeコマンドがwsl上から消えていたのかは謎ですが、恐らく以前PATHやbashrc周りを触っていたときに操作ミスとかで消していたのかもしれません。

この記事がどなたかの参考になれば幸いです。