Bash源命令

source command在当前shell环境中从指定为其参数的文件中读取并执行命令。 将函数,变量和配置文件加载到Shell脚本中很有用。

source 是Bash内置的shell,以及Linux和UNIX操作系统中使用的其他流行shell。 外壳之间的行为可能略有不同。

源命令语法

的语法 source 命令如下:

source FILENAME [ARGUMENTS]
. FILENAME [ARGUMENTS]
  • source. (一个句点)是相同的命令。
  • 如果 FILENAME 不是文件的完整路径,该命令将在目录中指定的目录中搜索文件 $PATH 环境变量。 如果在 $PATH,该命令将在当前目录中查找文件。
  • 如果有的话 ARGUMENTS 给出,它们将成为位置参数 FILENAME
  • 如果 FILENAME 存在, source 命令退出代码为 0,否则,如果找不到该文件,它将返回 1

源命令示例

在本节中,我们将介绍一些有关如何使用 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配置文件

随着 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脚本中的内置命令。

如果您有任何疑问或反馈,请随时发表评论。

bash终端

Sidebar