source命令加载函数库是将脚本中的函数定义读入当前Shell会话,不启动新进程,使函数立即可用;需用source或.执行,不可直接./运行,否则函数仅存在于子shell中。

在 Linux 中,用 source 命令加载函数库,本质是把写在独立文件里的函数定义“读进当前 Shell”,让这些函数立刻可用。它不启动新进程,所有函数直接注册到当前会话中。
函数库文件怎么写
函数库通常是一个纯 shell 脚本(无需 #!/bin/bash 头,但加上也无妨),只包含函数定义,例如:
funcs.sh
greet() { echo "Hi, $1"; }
add() { echo $(($1 + $2)); }
lsd() { ls -la "$1"; }
保存后确保文件可读(chmod +r funcs.sh 即可,不需要可执行权限)。
用 source 加载并验证
在终端中运行:
-
source funcs.sh或等价的. funcs.sh - 立即测试函数:
greet World→ 输出Hi, World - 用
declare -f greet可查看函数是否已定义
实际使用建议
- 推荐用绝对路径或明确相对路径,比如
source ./funcs.sh或source ~/lib/myfuncs.sh,避免因$PATH问题找不到文件 - 函数库中不要写
exit,否则source会直接退出当前终端 - 如果函数依赖某些环境变量,确保它们已在加载前设置好,或在库文件里一并
export - 可把常用库加到
~/.bashrc末尾:source ~/lib/common_funcs.sh,每次开新终端自动加载
和直接执行的区别
如果误用 ./funcs.sh,函数只在子 shell 中定义,退出后就消失了;而 source 让函数真正“住进”当前 Shell,后续任意命令都能调用。


















