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
中找不到文件FILENAME
,source
命令将在当前目录中搜索文件FILENAME
。
如果FILENAME
文件存在,source
命令退出代码为0
。如果找不到文件FILENAME
,source
命令退出代码为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
}
source 命令加载变量
假设你当前目录存在文件config.sh。文件包含两行Shell代码,行name="myfreax"
设置变量name
。echo "Hello ${name}!"
运行echo命令打印变量name
的值。
现在如果你想使用config.sh
的name
变量,可以运行命令source config.sh
将name
变量加载到当前Shell会话。
你也可以使用source命令的别名.
。运行命令. config.sh
将name
变量加载到当前Shell会话。
source config.sh
#eq
. config.sh
name="myfreax"
echo "Hello ${name}!"
结论
在本教程中,你了解如何在Linux使用source命令加载变量与函数,运行文件的命令。如果您有任何问题或反馈,请随时发表评论。