前言:之前对ROS的ROS_PACKAGE_PATH一直半懂不懂,甚至对它是linux众多系统环境变量普通一员都不是很清晰今天作一下梳理。
在安装ROS的时候有这么一段步骤:
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace
$ cd ~/catkin_ws/
$ catkin_make
$ source devel/setup.bash
其中最后一个命令是To make sure your workspace is properly overlayed by the setup script, make sure ROS_PACKAGE_PATH environment variable includes the directory you’re in,然后再执行查看命令:
$ echo $ROS_PACKAGE_PATH
会出现类似的显示:/home/youruser/catkin_ws/src:/opt/ros/kinetic/share:/opt/ros/kinetic/stacks,
说明系统环境变量ROS_PACKAGE_PATH已经被加了一条,正是这一条可以让ROS找到我们的PACKAGE,但是仅仅在Terminal里执行一次source,环境变量只是临时修改而已,比如现在重启电脑再执行上面的echo查看ROS_PACKAGE_PATH的值就会发现里面的新加的一条没了,那么问题来了,我们想要的是这个新路径被永久添加到ROS_PACKAGE_PATH值里,因为我们以后所有的ros包都会放进这个路径里面的,怎样才能实现每次开机ROS_PACKAGE_PATH里面都有我们修改后的路径呢?我总结了两个方法:
1,在~/.bashrc里面最后加上source /home/kylefan/catkin_ws/devel/setup.bash,这样每次Terminal启动时都会执行这条命令,也算变相实现了永久修改环境变量的值了。
2,在~/.bashrc里面最后加上export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:home/kylefan/catkin_ws/src
其实export命令 是临时修改linux系统环境变量的通用办法,也很好理解就相当于string=string+str_to_add的道理。所以我们在这有个引申,临时修改所有linux环境变量都可以用这个办法,要想永久修改呢?对,放进~/.bashrc里!