Linux中复用函数库文件的核心是通过source或.命令导入外部.sh文件,使函数在当前shell生效;需将函数集中定义、避免执行逻辑、使用local声明变量,并确保加载语句位于调用前且路径正确。

在 Linux 中复用函数库文件,核心是让多个脚本“共享同一份函数定义”,避免重复编写、分散维护。最常用且可靠的方式是通过 source 或 . 命令导入外部函数文件,使其在当前 shell 环境中生效。
把函数集中写进一个 .sh 文件
新建一个纯函数库文件(例如 lib.sh),只放函数定义,不写执行逻辑:
- 用
local声明变量,防止污染调用脚本的全局环境 - 函数名清晰,参数明确,比如
log_info() { echo "[INFO] $1"; } - 不加
#!/bin/bash也可以,但加上更规范;注意不要在库文件里直接调用函数或运行命令
在各个脚本中加载并使用
在需要复用函数的脚本开头,用以下任一方式引入库文件:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
source /path/to/lib.sh-
. /path/to/lib.sh(注意点号后必须有空格)
路径可以是绝对路径(推荐用于生产环境),也可以是相对路径(如 source ./lib.sh),前提是执行时当前工作目录正确。加载后,所有函数即可像本地定义一样直接调用,例如 log_info "Starting service"。
确保加载时机和作用域正确
几个关键细节不能忽略:
- 函数必须先定义、后调用 —— 所以
source语句一定要写在调用函数之前,通常放在脚本最顶部 -
source和.是在当前 shell 进程中执行库文件,因此函数、变量都会进入当前作用域;而sh lib.sh或./lib.sh是另起子进程,无法影响当前脚本 - 如果库文件依赖其他配置(如环境变量、常量),可另建
config.sh并先source它
进阶:统一管理多个脚本的函数路径
当脚本分布在不同目录时,可采用以下方式提升可移植性:
- 把
lib.sh放到固定位置(如/usr/local/lib/mylib.sh),所有脚本都用绝对路径加载 - 在脚本开头动态推导库路径:
source "$(dirname "$0")/lib.sh",这样无论从哪执行脚本都能找到同级的库文件 - 把常用函数库加入
~/.bashrc,适用于交互式场景下的命令行复用(注意:非登录 shell 可能不读取它)

















