source命令用于在当前Shell运行文件中的命令,source命令可用于将函数,变量和配置文件加载当前Shell。

source是Bash内置的命令,Bash是Linux和UNIX操作系统最流行Shell之一。source命令之间的行为可能略有不同。

在本教程中,我们将会说明如何在Linux使用source命令运行文件的命令,加载变量与函数等。

source命令

source命令的语法有两种,第一种是source FILENAME [ARGUMENTS]。第二种是.FILENAME [ARGUMENTS]

.source命令的别名。如果FILENAME不是文件的绝对路径,source命令将在PATH环境变量指定的目录搜索文件FILENAME

如果在$PATH中找不到文件FILENAMEsource命令将在当前目录中搜索文件FILENAME

如果FILENAME文件存在,source命令退出代码为0。如果找不到文件FILENAMEsource命令退出代码为1

如果ARGUMENTS有给出,ARGUMENTS将成为FILENAME文件的位置参数,ARGUMENTS可以是一个或者多个。

source 命令加载函数

如果您的多个Shell脚本有着相同的函数,则可以将函数提取到一个单独的文件中,然后在脚本中加载这些函数。

假设当前目录存在文件functions.sh。文件包含bash函数check_root,用于检查运行脚本的用户是否是root用户,如果不是root用户,它将显示一条消息并退出脚本。

现在你想在另一个脚本文件使用functions.sh文件包含的check_root函数检查运行脚本的用户是否是root用户。

此时,你只需在脚本简单的运行命令source functions.sh即可将check_root函数加载当前Shell会话。

#!/usr/bin/env bash

source functions.sh
check_root

echo "I am root"
check_root () {
  if [[ $EUID -ne 0 ]]; then
    echo "This script must be run as root" 
    exit 1
  fi
}
functions.sh

source 命令加载变量

假设你当前目录存在文件config.sh。文件包含两行Shell代码,行name="myfreax"设置变量nameecho "Hello ${name}!"运行echo命令打印变量name的值。

现在如果你想使用config.shname变量,可以运行命令source config.shname变量加载到当前Shell会话。

你也可以使用source命令的别名.。运行命令. config.shname变量加载到当前Shell会话。

source config.sh
#eq
. config.sh
name="myfreax"
echo "Hello ${name}!"
config.sh

结论

在本教程中,你了解如何在Linux使用source命令加载变量与函数,运行文件的命令。如果您有任何问题或反馈,请随时发表评论。