11 · 文件包含

2026.10.08 · 🟢

目标:掌握 source 与 . 的用法,理解「函数库」思想

🎯 今天要带走的三件事

  1. Shell 可以包含外部脚本,封装公用代码
  2. 两种写法:. filename(注意空格)和 source filename
  3. 被包含的文件不需要可执行权限

一、语法

. filename        # ⚠️ 点号和文件名之间有一空格
# 或
source filename

二、实例

test1.sh(被包含的「库文件」):

#!/bin/bash
url="http://www.runoob.com"

test2.sh:

#!/bin/bash
# 用 . 号引用
. ./test1.sh

# 或者用 source
# source ./test1.sh

echo "菜鸟教程官网地址:$url"

运行:

$ chmod +x test2.sh
$ ./test2.sh
菜鸟教程官网地址:http://www.runoob.com

三、关键注意

  • . 和文件名之间必须有空格,否则变成当前目录 . 和文件名拼接
  • 被包含文件(test1.sh)不需要可执行权限
  • 相当于把库文件的代码「复制粘贴」到当前位置执行,其中的变量/函数都能直接用

生活比喻

像 C 语言的 #include、Java 的 import:把常用工具(函数、变量)抽到单独文件,谁需要谁「引」进来,避免重复造轮子。


🌙 今日作业

  • [ ] 建两个文件:一个存公用函数,一个用 source 引入并调用

自测题

  1. . file 中点号后能省略空格吗?为什么?
  2. 被包含的文件需要 chmod +x 吗?
👉 参考答案 1. 不能。`.` 在 Shell 中是 source 的同义命令,必须与文件名用空格分隔,否则会被当成路径拼接。 2. 不需要。它只是被读取并执行内容,不是作为独立程序运行。

🔗 关联

Shell-学习总览|上一课 → 10-输入输出重定向|下一课 → 12-实战脚本合集