Bash Source 命令
source
命令从当前 shell 环境中指定为其参数的文件中读取和执行命令。将函数,变量和配置文件加载到 shell 脚本中非常有用。
source
命令已经内置在 Bash shell 中和 Linux 和 UNIX 操作系统中使用的其他流行的 shell 中。
Source 命令语法
该 source
命令的语法如下:
source FILENAME [ARGUMENTS]
. FILENAME [ARGUMENTS]
source
和.
(一个点)是同一个命令。- 如果该
FILENAME
文件不是文件的完整路径,则该命令将在$PATH
环境变量中指定的目录中搜索该文件。如果在该$PATH
命令中找不到该文件,则将在当前目录中查找该文件。 - 如果给出了任意的
ARGUMENTS
,它们将成为FILENAME
的位置参数。 - 如果
FILENAME
存在source
命令返回代码0
,否则如果找不到该文件则返回1
。
Source 命令示例
在本节中,我们将介绍 source
命令的一些基本示例。
采购职能
如果你有使用相同功能的 shell 脚本,你可以在一个单独的文件中提取它们,然后在你的程序中找到该文件。
在此示例中,我们将创建一个包含 bash 函数的文件,该函数检查运行脚本的用户是否为 root ,如果不是,则显示消息并退出脚本。
functions.sh
check_root () {
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root"
exit 1
fi
}
如果你的其他脚本需要仅仅由 root 用户运行,只需 source 一下 functions.sh
文件并调用该函数:
#!/usr/bin/env bash
source functions.sh
check_root
echo "I am root"
如果以非 root 用户身份运行上述脚本,脚本将打印 “This script must be run as root” 并退出。
这种方法的优点是您的脚本更小,更易读,您可以在需要时重用相同的函数文件,如果您需要修改函数,您只需编辑一个文件。
Bash 配置文件
使用 source
命令,您还可以从文件中读取变量。必须使用 Bash 语法设置变量 VARIABLE=VALUE
。
让我们创建一个测试配置文件:
config.sh
VAR1="foo"
VAR2="bar"
在 bash 脚本中使用该 source
命令读取配置文件:
#!/usr/bin/env bash
source config.sh
echo "VAR1 is $VAR1"
echo "VAR2 is $VAR2"
如果您运行脚本,输出将如下所示:
VAR1 is foo
VAR2 is bar
结论
在本指南中,您学习了如何 source
在 shell 脚本中使用 builtin 命令。