問題
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
終了後、再度起動するとエラーが出てこなくなった。