在 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
此时你就可以使用
lunch
、m
、mm
等命令了。
✅ 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