我正在编写一个脚本,用于安装ROS,并在安装完成后使用catkin_make编译工作空间。
我找到了解决问题的方法,但无法解释原因。我有一个名为install.bash的文件,它调用其他文件:
#!/bin/bash
source 01_install_ros.bash
重要的是在
01_install_ros.bash
文件中:# variable not set because it is done in the script setup.bash of ros
echo "before source in 01_install_ros"
echo "ROS_ROOT: "$ROS_ROOT
whereis catkin_make
echo ""
echo "source /opt/ros/kinetic/setup.bash" >> $HOME/.bashrc
# doesn't set the variables
source "$HOME"/.bashrc
# the solutions
source /opt/ros/kinetic/setup.bash
# variables not set if I use the source of .bashrc
echo "after source in 01_install_ros"
echo "ROS_ROOT: "$ROS_ROOT
whereis catkin_make
echo ""
如评论中所述,使用源 .bashrc 而不是直接设置 setup.bash 不起作用。我真的不明白为什么。你能解释一下吗?
.bashrc
旨在被Bash本身读取。您认为在脚本中执行此操作是否有必要? - ceving01_install_ros.bash
的末尾添加了一行代码,它会从ROS中引用setup.bash文件。所以我需要进行引用。 - onda47exec bash
启动一个新的 Bash,该 Bash 已经读取了更新后的.bashrc
。 - cevingset -x
自行查找。 - ceving