命令语法
# source命令
source FileName
# 或者使用"."命令替代
. FileName
命令作用
在当前bash环境下读取并执行FileName中的命令。
source命令通常用于重新执行刚修改的初始化文档,如 .bash_profile 和 .profile 这些配置文件。
举例说明
1. 添加环境变量
如当我们通过修改.profile添加环境变量时,通过
source .profile
可以使修改立即生效而不需要注销并重新登录。
2. 执行脚本
如新建一个脚本 test.sh
export test=123
若直接使用 <code> ./test.sh
` 调用,执行完毕后在shell环境中运行
`echo $test
会发现没有值。
但是使用<code>source ./test.sh
来执行,就会发现打印内容123。
原因:
因为直接调用.sh文件,内容是在一个子shell环境中执行的,并不会影响当前的shell环境(父shell环境)。
而source执行.sh文件是在当前shell中执行的。
总结
- source 可以由 . 点符号替代简写
- source 执行的脚本将在当前shell环境中运行而不会创建一个新的子shell。
- source 执行的脚本中所有设置的变量都会成为当前shell的一部分
source file 与 sh file 和 ./file 执行脚本的区别
- 需要的执行权限
i. 使用"./"执行脚本,对应的xxx.sh脚本必须要有执行权限
ii. 使用"sh"与"source"执行脚本,对应的xxx.sh没有执行权限,亦可执行 - 执行方式不同
i. 使用"./"执行脚本将使用脚本中第一行所指定的命令来解释和执行文件。
ii. 使用"sh"与"source"执行脚本,使用shell工具的SH脚本直接解释和执行文件 - 执行环境不同(source与其他两者的区别)
i. 使用"sh"与"./"执行脚本,脚本将在新创建的子shell环境中执行
ii. 使用"source"执行脚本,脚本将在当前shell环境执行