当前位置: 首页 > news >正文

如何让ROS2编译完后自动source环境变量

你有没有过这种苦恼,每次运行colcon build之后,总是忘记source install/setup.bash,导致运行节点的时候提示package not found,从而又要重新输入一遍source命令。

解决办法很简单,将以下内容复制粘贴到~/.bashrc文件中:

# ROS2 workspace build + auto source cb() { if [ ! -d "src" ]; then echo "Error: Not in a ROS2 workspace root (src/ directory not found)" return 1 fi if colcon build "$@"; then echo "✅ colcon build succeed" if source install/setup.bash; then echo "✅ successfully loaded install/setup.bash" else echo "⚠️ failed to load install/setup.bash" fi else echo "❌ colcon build failed" return 1 fi }

如此一来,我们只需要在ROS2工作空间中用cb命令代替colcon build,就可以自动在编译后source环境变量了:

cb # 编译整个工作空间并自动source ros2 run ... # 然后直接运行ROS2程序即可,无需再source

且由于我们在配置语句中使用了colcon build "$@",所以cb命令附带的参数也会传递给colcon build

cb --packages-select my_pkg # 编译指定包并自动source cb --symlink-install # 带参数编译并自动source

下面是实际对比,左边是colcon build(编译完后不能马上运行程序),右边是cb(编译完后马上可以运行程序,无需source):

其实还可以再在 `~/.bashrc` 中加入一段:

# quickly source install/setup.bash sos() { # check if src directory exists if [ ! -d "src" ]; then echo "Error: No src/ directory found. Are you in a ROS2 workspace?" return 1 fi # source if source install/setup.bash; then echo "✅ successfully loaded install/setup.bash" else echo "⚠️ failed to load install/setup.bash" fi }

这样的话,在不需要重新编译项目的时候,也可以使用`sos`命令快捷source环境变量。

http://www.jsqmd.com/news/664278/

相关文章:

  • 2026年3月撕碎机刀片直销厂家推荐,撕碎机/刀片撕碎机/轮胎圈口抽丝机/塑料破碎机,撕碎机刀片源头厂家哪家可靠 - 品牌推荐师
  • 2026年质量好的物流门封/月台门封/东台冷库门封优质厂家推荐榜 - 行业平台推荐
  • 全球仅存5份的AGI发展风险对齐时间轴(NSF/DoD/中科院机密评估版节选),2024Q3更新后3处重大修订预警
  • golang如何读写YAML配置文件_golang YAML配置文件读写解析
  • ARM AHB总线传输机制与优化策略详解
  • 为什么82%的团队停用Copilot?——代码熵值暴涨背后的度量盲区(含实时熵监控看板+生成策略调优SOP)
  • 跨平台流媒体下载终极指南:如何用N_m3u8DL-RE轻松获取加密视频内容
  • Pixel Aurora Engine多场景:像素字体生成、复古UI组件库AI设计
  • 2026年口碑好的化纤纸管/DTY纸管厂家推荐与选型指南 - 行业平台推荐
  • 别再用Rule-based工具扫LLM生成代码了,SITS2026验证:传统SAST对Copilot产出漏洞检出率仅31.4%,这3个信号必须立即升级
  • DCT-Net真实案例分享:从普通照片到精美卡通头像的蜕变
  • 终极解决方案:如何让Calibre完美保留中文路径,告别拼音目录困扰
  • 便宜的和贵的降AI率工具差在哪?排行榜前后对比告诉你
  • Youtu-Parsing入门必看:从零配置WebUI(7860端口)快速上手
  • 解锁金融数据宝藏:AKShare财经数据接口库完全指南
  • **发散创新:基于Python与SpeechRecognition库的实时语音识别系统设计与实现**在人工智能飞速发展的今天,语音
  • WorkshopDL深度指南:打破平台壁垒,解锁Steam创意工坊的终极钥匙
  • 仅限首批200家企业的文档同步治理沙盒计划启动:含VS Code插件、Git Hook拦截器及审计看板(限免至Q3末)
  • Qwen3-TTS新手入门:5步搭建语音合成环境,生成你的第一段AI语音
  • Nanbeige 4.1-3B WebUI实战案例:集成Stable Diffusion生成图文回复
  • 硅基的自我觉醒:当AI吃光人类最后一块知识蛋糕,那扇“枯竭之墙”背后藏着怎样的新世界?
  • GHelper终极指南:免费快速掌控你的华硕笔记本性能
  • 排行榜第一的降AI率工具怎么用?手把手教你3步搞定
  • AI热修复不是幻想,而是已上线:某头部云厂商实测数据——平均MTTR从18分钟降至2.3秒,
  • MySQL中如何利用ASCII码转换字符_MySQL ASCII函数应用
  • 从卷积核到特征图:用PyTorch可视化CNN的“视觉”形成过程
  • nli-distilroberta-base基础教程:NLI任务与相似度计算、语义匹配的本质区别
  • 为什么JavaScript的Array.prototype.sort默认是不稳定的?
  • Chord工具新手指南:上传MP4视频,轻松获取详细内容描述与时间戳
  • 3个AMD Ryzen硬件调试技巧:开源SMU工具实战指南