Open6

WSL2で突然sudoが使えなくなった( -bash: syntax error unexpected token '(' )

マッチャマッチャ

sudo apt upgradeを打とうとしたらエラーが出た

~$ sudo apt upgrade
-bash: syntax error unexpected token '('

which sudoで直接叩いたら実行できたのでsudoのパスが通ってない?と推測

~$ which sudo
/usr/bin/sudo

~$ /usr/bin/sudo apt upgrade
Reading package lists... Done
マッチャマッチャ

根気強く探したところ、この記事を発見
https://estuarine.jp/2021/02/bash-wsl-error/

~$ printenv
----
:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common
(省略)

ずらずらとwindowsの環境変数が出てきました。これがubuntuにも引き継がれてたことが原因らしいです。

マッチャマッチャ

https://zenn.dev/o2z/articles/zenn-20210524-01
この記事と同じような手順を踏みました。

~$ sudo vi /etc/wsl.conf 
(ファイルがない場合は作成)
--
# WindowsのPATHを引き継がない設定を追記する
[interop]
appendWindowsPath = false

windowsを再起動

~$ echo $PATH
(パスが削除されていることを確認)

無事使えるようになりました。