Linux source命令详解

/ 0评 / 0

命令语法

# 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中执行的

总结

  1. source 可以由 . 点符号替代简写
  2. source 执行的脚本将在当前shell环境中运行而不会创建一个新的子shell。
  3. source 执行的脚本中所有设置的变量都会成为当前shell的一部分

source file 与 sh file 和 ./file 执行脚本的区别

  1. 需要的执行权限
    i. 使用"./"执行脚本,对应的xxx.sh脚本必须要有执行权限
    ii. 使用"sh"与"source"执行脚本,对应的xxx.sh没有执行权限,亦可执行
  2. 执行方式不同
    i. 使用"./"执行脚本将使用脚本中第一行所指定的命令来解释和执行文件。
    ii. 使用"sh"与"source"执行脚本,使用shell工具的SH脚本直接解释和执行文件
  3. 执行环境不同(source与其他两者的区别)
    i. 使用"sh"与"./"执行脚本,脚本将在新创建的子shell环境中执行
    ii. 使用"source"执行脚本,脚本将在当前shell环境执行

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注