Android 源码两种执行脚本的区别

在 Linux 或 Android 源码环境中,. make_build.sh./make_build.sh 是两种 执行脚本 的方式,但它们的含义和行为有本质区别。

make_build.sh 脚本

bash 复制代码
COMBO=uis7870_2h10_car_native-userdebug-native
cp -ap vendor/sprd/release/IDH/${COMBO}/* .
source build/envsetup.sh
lunch ${COMBO}
if [   -n "$2" ];then
    make update-api
fi
make -j$1

✅ 1. . make_build.sh(点空格脚本名)

含义:

这是 在当前 Shell 进程中 执行脚本的方式,也叫作 source 命令

复制代码
. make_build.sh

等价于:

bash 复制代码
source make_build.sh

特点:

  • 脚本中的命令会在当前 Shell 环境中运行

  • 可以修改当前 Shell 的环境变量、函数、别名等。

  • 常用于加载配置文件或设置环境变量(如 envsetup.sh)。

    示例:

    bash 复制代码
    # build/envsetup.sh 就是这样被加载的
    . build/envsetup.sh

    此时你就可以使用 lunchmmm 等命令了。


✅ 2. ./make_build.sh

含义:

这是作为可执行程序运行脚本的方式。

bash 复制代码
./make_build.sh

前提是该脚本具有可执行权限:

bash 复制代码
chmod +x make_build.sh

特点:

  • 脚本会在一个子 Shell 中运行

  • 对环境变量的修改不会影响当前 Shell。

  • 更适合做一次性任务处理,如构建、打包、清理等。

    示例:

    bash 复制代码
    # 构建某个模块并输出日志
    ./make_build.sh

    脚本内容可能如下:

    bash 复制代码
    #!/bin/bash
    echo "开始构建..."
    m CarSystemUI

🧠 总结对比

方式 是否启动新进程 是否影响当前 Shell 环境 使用场景
. make_build.sh ❌ 不启动 ✅ 会修改当前 Shell 加载环境变量、函数、别名等
./make_build.sh ✅ 启动 ❌ 不影响当前 Shell 执行独立任务,如编译、打包

💡 推荐用法建议

  • 如果你想设置一些环境变量或别名供当前终端使用 ➤ 使用 . make_build.sh
  • 如果你想运行一个构建任务而不影响当前 Shell ➤ 使用 ./make_build.sh
相关推荐
cwzqf1 小时前
Jectpack Compose项目组件代码分享(1):分页加载组件
android
@北海怪兽1 小时前
SQL常见函数整理 _ STRING_AGG()
android·数据库·sql
鹏晨互联3 小时前
【Compose vs XML:边框内外间距的实现对比】
android·xml
Android系统攻城狮3 小时前
Android tinyalsa深度解析之pcm_plugin_write调用流程与实战(一百七十九)
android·pcm·tinyalsa·android16·音频进阶·android音频进阶
ID_180079054733 小时前
除了JSON,淘宝店铺商品API接口还支持哪些数据格式?
android·数据库
KillerNoBlood3 小时前
2026移动端跨平台开发面经总结
android·算法·flutter·ios·移动开发·鸿蒙·kmp
消失的旧时光-19434 小时前
Android / IoT 面试复盘总结:从 MQTT、TLS 到 JWT 权限体系(标准答案 + 工程理解 + 延伸知识链)
android·物联网·面试
坐吃山猪4 小时前
【Hanako】README02_LEVEL2_Agent编排机制
源码·agent·hanako
林多5 小时前
【Android】 GPU过度绘制实现原理
android·gpu·性能·实现原理·过度绘制·overdraw
薄荷椰果抹茶5 小时前
手机端Obsidian安装与同步全攻略
android