嵌入式开发场景中Shell脚本执行方式的对比

Shell脚本执行方式对比表

执行方式命令示例是否需要执行权限是否启动子Shell环境变量影响范围适用场景嵌入式开发中的典型应用
直接执行脚本./script.sh子Shell内有效独立运行的脚本,需固定环境自动化构建脚本(如编译固件)
指定解释器执行bash script.sh子Shell内有效快速测试、无需权限的调试临时调试设备日志分析脚本
source 或 . 执行source script.sh当前Shell全局有效加载环境变量、定义函数/别名初始化交叉编译环境(如设置PATH
全局调用(PATH)script.sh(需在PATH中)子Shell内有效频繁使用的工具脚本部署到设备中的常用工具脚本
输入重定向/管道bash < script.sh子Shell内有效动态生成脚本内容或临时执行通过SSH发送脚本到嵌入式设备执行

各执行方式详解及嵌入式场景说明

1. ‌直接执行脚本
  • 嵌入式应用‌:
    在自动化构建时(如通过Jenkins),直接运行编译脚本生成固件:
./build_firmware.sh
  • 注意‌:
    • 需在脚本第一行指定正确的shebang(如#!/bin/bash)。
    • 嵌入式设备可能使用精简Shell(如dash),需测试兼容性。
2. ‌指定解释器执行
  • 嵌入式应用‌:
    临时调试时,直接通过解释器运行脚本(无需修改权限):
sh analyze_logs.sh  # 设备可能默认使用`sh`而非`bash`
  • 注意‌:
    • 嵌入式设备的Shell可能是busybox ash,需注意语法兼容性。
3. ‌source 执行(关键场景)
  • 嵌入式应用‌:
    初始化交叉编译工具链环境变量(变量需全局生效):
source setup_toolchain.sh  # 脚本内容:export PATH="/opt/arm-gcc/bin:$PATH"
  • 注意‌:
    • 必须用source‌,否则变量仅在子Shell生效,编译时会提示找不到工具链。
4. ‌全局调用(PATH)
  • 嵌入式应用‌:
    将常用脚本(如设备重启脚本)放入/usr/local/bin
reboot_device  # 直接调用,无需路径

注意‌:

  • 嵌入式设备存储空间有限,避免添加过多全局脚本
5. ‌输入重定向/管道
  • 嵌入式应用‌:
    通过SSH远程执行嵌入式设备中的临时脚本:
echo "ls /etc" | ssh root@192.168.1.100  # 直接执行单行命令
  • 注意‌:
    • 适用于资源受限设备,无需存储脚本文件。

嵌入式开发中推荐使用 source 的场景

场景原因
配置交叉编译环境需要将工具链路径(如ARM_TOOLCHAIN)持久化到当前Shell环境,供后续编译使用。
加载设备驱动模块脚本中包含insmod加载驱动命令,需直接作用于当前系统环境。
定义调试函数/别名快速调用设备调试命令(如alias logdump="dmesg | grep ERROR")。

总结

  • 优先使用 source‌:在需要‌环境变量或命令持久化‌时(如初始化开发环境)。
  • 直接执行脚本‌:适用于‌独立任务‌(如编译、打包)。
  • 注意Shell兼容性‌:嵌入式设备可能使用ashdash,需测试脚本语法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/73726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MES系统需要采集的数据及如何采集

​数据采集在企业信息化建设中占据着举足轻重的地位&#xff0c;是实现物料跟踪、生产计划制定、产品历史记录维护以及其他生产管理活动的基石。数据的准确性和实时性直接关系到企业信息化能否成功落地&#xff0c;是企业迈向高效生产的关键因素。 数据收集对于MES制造执行系统…

闭环管理:借助数字化管理平台实现客户反馈的价值升级

在竞争激烈的市场环境中&#xff0c;客户反馈已成为企业优化服务、提升竞争力的核心资源。如何高效处理客户反馈&#xff0c;将其转化为企业持续改进的动力&#xff0c;是每个企业面临的重要课题。作为服务管理数字化转型服务商&#xff0c;瑞云服务云为大中型企业提供了一套完…

C++Primer学习(13.6 对象移动)

13.6 对象移动 新标准的一个最主要的特性是可以移动而非拷贝对象的能力。如我们在13.1.1节(第440页)中所见&#xff0c;很多情况下都会发生对象拷贝。在其中某些情况下&#xff0c;对象拷贝后就立即被销毁了。在这些情况下&#xff0c;移动而非拷贝对象会大幅度提升性能。 如我…

Uni-app页面信息与元素影响解析

获取窗口信息uni.getWindowInfo {pixelRatio: 3safeArea:{bottom: 778height: 731left: 0right: 375top: 47width: 375}safeAreaInsets: {top: 47, left: 0, right: 0, bottom: 34},screenHeight: 812,screenTop: 0,screenWidth: 375,statusBarHeight: 47,windowBottom: 0,win…

大模型 API 调用中的流式输出与非流式输出全面对比:原理、场景与最佳实践

流式输出与非流式输出应用场景 流式输出的理想应用场景 实时对话系统聊天机器人和虚拟助手客服系统和用户支持平台实时问答和教育辅导应用 渐进式内容生成代码补全和编程辅助工具&#xff08;如 GitHub Copilot&#xff09;实时文档协作和编辑系统创意写作和内容创作平台 用户…

Problem A: 计算奇数和

补充&#xff08;牢骚&#xff09;&#xff1a; 必须要 Main 类&#xff0c;自己自定义的类不能跑&#xff0c;说实话我被恶心到了&#xff0c;真没力扣好用。后面都默认为Main 类。真恶心&#xff0c;其实不止这一点。。。 1.题目问题 2.输入 3.输出 4.样例 5.代码实现 imp…

深度赋能!北京智和信通融合DeepSeek,解锁智能运维无限可能

在数字化飞速发展的今天&#xff0c;传统运维模式面临着设备规模激增、故障复杂度攀升、人工响应滞后等多重挑战。随着DeepSeek、腾讯元宝等AI大模型的兴起&#xff0c;为传统运维模式带来了新的变革。 北京智和信通基于DeepSeek大模型技术&#xff0c;将AI和运维场景深度融合&…

2024年第五届MathorCup数学应用挑战赛大数据竞赛复赛论文

2024年第五届MathorCup数学应用挑战赛——大数据竞赛 复赛(二等奖)论文 本人亲自与队友完成的论文&#xff0c;进入复赛但由于和亚太时间冲突&#xff0c;身体很累最后放弃了复赛并没有参赛…最后获二等奖&#xff1b; 虽然如果参加的话一等奖问题应该不大&#xff0c;但是分配…

性能测试~

1.什么是性能测试 1.什么是性能 就像这两个车一样,虽然都是代步工具,构造都是一样的,但是路虎的发动机要比捷达好.路虎的百米加速却是比捷达快的,我们就知道路虎的性能要比捷达好 . 那么什么是软件的性能呢?我们分析一下 2.常见的性能测试指标 2.1并发数 并发数是指在同一…

【极速版 -- 大模型入门到进阶】LORA:大模型轻量级微调

文章目录 &#x1f30a; 有没有低成本的方法微调大模型&#xff1f;&#x1f30a; LoRA 的核心思想&#x1f30a; LoRA 的初始化和 r r r 的值设定&#x1f30a; LoRA 实战&#xff1a;LoraConfig参数详解 论文指路&#xff1a;LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE M…

【论文分析】无人机轨迹规划,Fast-Planner:实时避障+全局最优的路径引导优化算法

这篇论文《Robust Real-time UAV Replanning Using Guided Gradient-based Optimization and Topological Paths》由香港科技大学提出&#xff0c;主要针对无人机&#xff08;UAV&#xff09;在复杂环境中的实时轨迹重新规划问题&#xff0c;提出了一种结合梯度优化和拓扑路径搜…

禅道品牌全面战略升级:开创项目管理国产化替代新格局

2025年&#xff0c;禅道软件完成企业品牌战略深度升级。此次升级&#xff0c;从产品力、服务力到生态圈构建等方面进行了全面优化&#xff0c;以更智慧的解决方案、更开放的生态布局&#xff0c;更安全的国产化解决方案&#xff0c;助力企业实现从“工具应用”到“价值创造”的…

PyTorch处理数据--Dataset和DataLoader

在 PyTorch 中&#xff0c;Dataset 和 DataLoader 是处理数据的核心工具。它们的作用是将数据高效地加载到模型中&#xff0c;支持批量处理、多线程加速和数据增强等功能。 一、Dataset&#xff1a;数据集的抽象‌ Dataset 是一个抽象类&#xff0c;用于表示数据集的接口。你…

Android 蓝牙/Wi-Fi通信协议之:经典蓝牙(BT 2.1/3.0+)介绍

在 Android 开发中&#xff0c;经典蓝牙&#xff08;BT 2.1/3.0&#xff09;支持多种协议&#xff0c;其中 RFCOMM/SPP&#xff08;串口通信&#xff09;、A2DP&#xff08;音频流传输&#xff09;和 HFP&#xff08;免提通话&#xff09;是最常用的。以下是它们在 Android 中的…

R002-云计算

1 概念 英文名&#xff1a;Cloud Computing 核心:云计算的核心概念就是以互联网为中心&#xff0c;在网站上提供快速且安全的云计算服务与数据存储&#xff0c;让每一个使用互联网的人都可以使用网络上的庞大计算资源与数据中心 2.分类 基础设施即服务&#xff08;IaaS)它向…

降维(DimensionalityReduction)基础知识2

文章目录 五、基于局部结构保持的降维1、Laplacian Eigenmaps&#xff08;拉普拉斯特征映射&#xff09;&#xff08;1&#xff09;邻接矩阵&#xff08;2&#xff09;图论基础&#xff08;3&#xff09;Laplace算子1、散度&#xff08;Divergence&#xff09;2、拉普拉斯算子3…

物联网中的物模型是什么意思,在嵌入式软件开发中如何体现?

1. 物模型的概念 物模型&#xff08;Thing Model&#xff09;是物联网中对物理设备或虚拟设备的抽象描述&#xff0c;定义了设备的属性、事件和服务。它是设备与云平台或其他设备之间交互的基础&#xff0c;用于统一描述设备的能力和行为。 1.1 物模型的组成 属性&#xff0…

【蓝桥杯】单片机设计与开发,PWM

一、PWM概述 用来输出特定的模拟电压。 二、PWM的输出 三、例程一&#xff1a;单片机P34引脚输出1kHZ的频率 void Timer0Init(void);unsigned char PWMtt 0;void main(void) {P20XA0;P00X00;P20X80;P00XFF;Timer0Init();EA1;ET01;ET11;while(1);}void Timer0Init(void) //1…

C#中,什么是委托,什么是事件及它们之间的关系

1. 委托&#xff08;Delegate&#xff09; 定义与作用 ‌委托‌是类型安全的函数指针&#xff0c;用于封装方法&#xff0c;支持多播&#xff08;链式调用&#xff09;。‌核心能力‌&#xff1a;将方法作为参数传递或异步回调。 使用场景 回调机制&#xff08;如异步操作完…

从替代到超越,禅道国产化替代解决方案2.0发布!

3月22日&#xff0c;由禅道携手上海惠艾信息科技、麦哲思科技共同举办的禅道・中国行北京站活动圆满落下帷幕。 除深入探究AI赋能研发项目管理外&#xff0c;禅道在活动现场正式发布了《禅道国产化替代解决方案2.0》&#xff0c;助力企业全方位构建自主可控的研发项目管理新体…