WSL2にROS導入メモ:syntax error near unexpected token `('でcatkin_makeなどが通らない際の解決法


問題

WSL2上でROS環境の構築をしようとしたものの、source /opt/ros/melodic/setup.bashやsource ~/catkin_ws/devel/setup.bash、catkin_makeをすると以下のようなエラーが出てしまった。
-bash: /tmp/setup.sh.Mj4Jcya6cq: line 4: syntax error near unexpected token '('

原因

これは、環境変数PATHに()を含む文字列が含まれてしまっていることが原因である。
筆者の場合はWindowsのc/Program Files (x86)がこれに該当した。

解決法

そこで、WSL2のPATHからWindowsのPATHを抜くことを考える。
WSL2のPATHにWindowsのPATHを含むかどうかは/etc/wsl.confで指定することができる。(デフォルトでは存在しないが自分で作成すればWSL2が起動時に勝手に参照してくれる)

WSL2のターミナルで


cd /etc/wsl.conf
sudo vim /etc/wsl.conf

などとして/etc/wsl.confを開き、以下のように編集する。

[interop]
appendWindowsPath = false

その後、WSL2を再起動する。
ターミナルを閉じた後にWindows Powershellで以下のようにコマンドを打つとWSL2を終了させることができる。


wsl -t <ディストリビューション名>

現在実行中のディストリビューション名は以下のコマンドで確認できる


wsl -l -v

終了後、再度起動するとエラーが出てこなくなった。

参考

  1. Windows10 WSL2にLinux居城を爆誕させる
  2. [WSL2] Slow completion due to Windows PATH being appended to Linux PATH
  3. (PCではなく)WSL2のみを終了、再起動する方法