蛋皮のhome

从此唯行乐,闲愁奈我何。

【ROS错误】关于source ~/.bashrc却不生效的问题

最近一直在 Qt 环境下开发 ROS ,新建了一个 catkin_qt_ws 的工作空间。后面忽然想用终端试着打开一下 Qt 环境下开发的 ROS 包,然后用 rosrun 发现并没有,便准备将 source ~/catkin_qt_ws/devel/setup.bash 添加进 ~/.bashrc ,然后用 vim 打开 ~/.bashrc ,然后添加如上语句,按下 Esc 并输入 :wq 保存并退出,然后便 source ~/.bashrc ,开始尝试使用 rosrun 。然后发现,依旧没有找到包?

后来尝试了重开终端,也尝试了重启,都没有任何效果。就感觉好像 source ~/.bashrc 完全没有生效一样。

后来我打开 ~/.bashrc 故意输错刚刚写入的路径,重新 source ~/.bashrc ,发现也能出现报错提示,所以说明添加进去的语句已经肯定是已经执行了的。但为什么就没有生效呢?

我把部分配置文件贴出来,如下所示:

source /opt/ros/melodic/setup.bash
source ~/catkin_ws/devel/setup.bash
source ~/catkin_qt_ws/devel/setup.bash
source ~/SmartCar/devel/setup.bash

如上所示,catkin_qt_ws 这个工作空间是放在了 catkin_ws 和 SmartCar 之间的。而 SmartCar 这个工作空间是之前就已经设置过的。目前看来也都没有什么不对,然后我尝试将 catkin_qt_ws 的配置路径放在了 SmartCar 的下面。即:

source /opt/ros/melodic/setup.bash
source ~/catkin_ws/devel/setup.bash
source ~/SmartCar/devel/setup.bash
source ~/catkin_qt_ws/devel/setup.bash

这样的话,就是遵循了后配置的放在后面。其实我后面还有两个语句,但是是配置 ROS 的 ip 地址的,并不是配置 ROS 的工作空间的。然后我保存退出。重新 source ~/.bashrc 。然后使用 rosrun 并通过 Tab 键尝试看能否自动显示出包。

发现这个时候,新增的工作空间的包都能正常识别出来了。目前我还尚不清楚在我调用 source 的时候, ROS 内部是怎么处理的,还是说是 bashrc 的处理问题。毕竟一般情况下,只要不是直接相关的东西,在 bashrc 里的配置是没有先后顺序之分的,一般也都能正常工作。但是新增的工作空间的配置必须放在之前已配置过的工作空间的后面,否则就无法生效并且也没有任何报错,其中的具体原因暂时我也不清楚。

事违常识,暂且为记。

发表评论

Your email address will not be published. Required fields are marked *.

*
*
You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>