多工作空间并存时ROS的环境变量异常问题

   今天突然发现当多工作空间并存时,我的ROS的环境变量发生了比较诡异的异常,按照我之前的理解,在.bashrc文件中按顺序设定了ROS的环境变量后,ROS就会按照.bashrc中编写的环境变量来搜寻功能包,例如在.bashrc文件使用soure设定了以下的环境变量后

source /opt/ros/noetic/setup.bash
source /home/gly/Car-like-Robotic-swarm/devel/setup.bash
source /home/gly/motionplanning_ws/devel/setup.bash
source /home/gly/catkin_ws/devel/setup.bash

   使用echo $ROS_PACKAGE_PATH指令打印出的路径,正常而言,应该如下所示,即在.bashrc文件中的位置越靠后,其优先级应该越高,且打印出的环境变量应该与.bashrc文件中设定的环境变量一一对应。

/home/gly/catkin_ws/src:/home/gly/motionplanning_ws/src:/home/gly/Car-like-Robotic-swarm/src:/opt/ros/noetic/share

   以上是我之前的理解,但今天的测试发现,事情并非如此,使用echo $ROS_PACKAGE_PATH指令打印出的路径实际上如下所示,其优先级是混乱的,并非设定的那样。

/home/gly/motionplanning_ws/src:/home/gly/Car-like-Robotic-swarm/src:/home/gly/catkin_ws/src:/opt/ros/noetic/share

   然后,我进一步在.bashrc中删除了环境变量source /home/gly/ motionplanning_ws/devel /setup.bash,只保留了剩下的三个,保存后,在新的终端打印出的环境变量如下,依然包含我已经在.bashrc文件中删除的那个环境变量,且优先级依然是最高

/home/gly/motionplanning_ws/src:/home/gly/Car-like-Robotic-swarm/src:/home/gly/catkin_ws/src:/opt/ros/noetic/share

   然后,我把source /home/gly/catkin_ws/devel/setup.bash这行也删了,也就是说,此时在.bashrc文件中设定的环境变量仅剩下如下的两个:

source /opt/ros/noetic/setup.bash
source /home/gly/Car-like-Robotic-swarm/devel/setup.bash

   保存后,在新的终端,再使用echo $ROS_PACKAGE_PATH指令打印ROS的环境变量时,打印结果如下,好消息是/home/gly/ motionplanning_ws/devel /setup.bash的路径终于没了,坏消息是为啥/home/gly/catkin_ws/devel/setup.bash的还在????

/home/gly/Car-like-Robotic-swarm/src:/home/gly/catkin_ws/src:/opt/ros/noetic/share

   为了测试,是在执行完哪行source后发生的问题,我在每个soure后面都加了一句打印环境变量的语句,如下所示:

# ROS Noetic - 基础 ROS 安装
source /opt/ros/noetic/setup.bash
echo $ROS_PACKAGE_PATH 
# Car-like Robotic Swarm 工作空间
source /home/gly/Car-like-Robotic-swarm/devel/setup.bash
echo $ROS_PACKAGE_PATH 
# Motion Planning 工作空间
source /home/gly/motionplanning_ws/devel/setup.bash
echo $ROS_PACKAGE_PATH 
# Catkin 工作空间
source /home/gly/catkin_ws/devel/setup.bash
echo $ROS_PACKAGE_PATH 

   新打开一个终端时,会显示上述打印信息,如下所示,可以发现,当执行完第二个soure后,就发生了异常,正常来说,执行完第二个source应该只有ROS安装和Car-like Robotic Swarm 工作空间的环境变量,然而却多了Catkin 工作空间的工作变量…

/opt/ros/noetic/share
/home/gly/Car-like-Robotic-swarm/src:/home/gly/catkin_ws/src:/opt/ros/noetic/share
/home/gly/motionplanning_ws/src:/home/gly/Car-like-Robotic-swarm/src:/home/gly/catkin_ws/src:/opt/ros/noetic/share
/home/gly/motionplanning_ws/src:/home/gly/Car-like-Robotic-swarm/src:/home/gly/catkin_ws/src:/opt/ros/noetic/share

   找了半天,也没找到具体啥原因,暂时的解决方法是,在source指令的后面用export ROS_PACKAGE_PATH在.bashrc中按照所期望的优先级手动设定ROS环境变量的方法,如下所示

export ROS_PACKAGE_PATH=/home/gly/catkin_ws/src:/home/gly/motionplanning_ws/src:/home/gly/Car-like-Robotic-swarm/src:/opt/ros/noetic/share

   如果有大佬知道上述在.bashrc中使用soure设定环境变量与实际环境变量不匹配异常的原因或者更好的解决方法,欢迎在评论区指出


  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕羽★

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值