Bash source命令
时间:2020-03-05 15:31:40 来源:igfitidea点击:
'source'命令在当前shell环境中从作为其参数指定的文件中读取并执行命令。
将函数,变量和配置文件加载到Shell脚本中很有用。
“source”是Bash内置的shell,以及Linux和UNIX操作系统中使用的其他流行shell。
shell之间的行为可能略有不同。
source命令语法
'source'命令的语法如下:
source FILENAME [ARGUMENTS] . FILENAME [ARGUMENTS]
- “来源”和“。” (一个句点)是相同的命令。
- 如果'FILENAME'不是文件的完整路径,该命令将在'$PATH'环境变量指定的目录中搜索该文件。
如果在“ $PATH”中找不到该文件,该命令将在当前目录中查找该文件。
- 如果给出任何“ ARGUMENTS”,它们将成为“ FILENAME”的位置参数。
- 如果'FILENAME'存在,则'source'命令退出代码为'0',否则,如果找不到该文件,它将返回'1'。
source命令示例
在本节中,我们将介绍一些有关如何使用“ 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用户运行的每个脚本中,只需简单地获取“ functions.sh”文件并调用该函数即可:
#!/usr/bin/env bash source functions.sh check_root echo "I am root"
如果我们以非root用户身份运行上述脚本,它将显示“此脚本必须以root用户身份运行”并退出。
这种方法的优点是脚本更小,更易读,可以在需要时重用相同的功能文件,并且如果需要修改功能,则只能编辑一个文件。
Bash配置文件
使用“源”命令,我们还可以从文件中读取变量。
必须使用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