ros bad file

问题描述

在WSL的一个ROS工作空间对项目进行编译的时候出现了以下错误信息提示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/home/ydx/code/CPP/download_codes/autonomous_yhs_fr07/build/catkin_generated/env_cached.sh: 12: export: Files/Microsoft: bad variable name
CMake Error at /opt/ros/melodic/share/catkin/cmake/safe_execute_process.cmake:11 (message):

execute_process(/home/ydx/code/CPP/download_codes/autonomous_yhs_fr07/build/catkin_generated/env_cached.sh
"/usr/bin/python2" "/usr/bin/empy" "--raw-errors" "-F"
"/home/ydx/code/CPP/download_codes/autonomous_yhs_fr07/build/catkin_generated/order_packages.py"
"-o"
"/home/ydx/code/CPP/download_codes/autonomous_yhs_fr07/build/catkin_generated/order_packages.cmake"
"/opt/ros/melodic/share/catkin/cmake/em/order_packages.cmake.em") returned
error code 2
Call Stack (most recent call first):
/opt/ros/melodic/share/catkin/cmake/em_expand.cmake:25 (safe_execute_process)
/opt/ros/melodic/share/catkin/cmake/catkin_workspace.cmake:35 (em_expand)
CMakeLists.txt:69 (catkin_workspace)

由第一行的export: Files/Microsoft: bad variable name可以看出是某个环境变量中有类似Program Files/Microsoft这样的路径导致的错误。显然这和WSL的路径有关。通过在网上查找资料,发现了askubuntu.com上面的一个帖子有一个类似的问题描述,这里参照第二个回答,先在/etc/wsl.conf文件添加了下面两行:

1
2
[interop]
appendWindowsPath = false

如果在诸如~/.bashrc或者~/.zshrc文件中添加了类似export PATH=$PATH:/mnt/c/Windows/System32这样的路径,也需要将这些路径注释掉。

然后在PowerShell中执行wsl --shutdown命令彻底关闭WSL后重启WSL,重新编译时不再出现这个错误。在编译完成后,需要将之前完成的更改恢复,否则诸如VSCode等工具将无法正常使用。