Linux系统的source命令详解

时间:2025-02-23 09:29:05

目录

一、命令介绍

二、基本用法

三、使用场景

1、环境变量

2、函数和别名

3、配置文件

三、命令示例

1、一般的脚本文件

2、使用source的效果

四、使用 source 命令的重要性

1、修改当前 shell 会话的环境

2、加载配置文件

3、在当前 shell 会话中测试脚本

五、其他事项


一、命令介绍

        source 命令在 Linux 和其他 Unix-like 系统中用于在当前 shell 会话中读取并执行指定文件中的命令。这意味着,当你使用 source 命令运行一个脚本时,该脚本中的变量、函数和其他 shell 特性都会在当前 shell 会话中生效,而不仅仅是在子 shell 中。

二、基本用法

      Source的使用语法如下:

                source filename

        或者,更常见的简写方式是使用点号 .

                . filename

        在这里,filename 是想要在当前 shell 会话中运行的脚本的名称。

三、使用场景

1、环境变量

        在当前会话中设置或更改环境变量,可以使用source命令来执行一个包含这些变量设置的脚本。

2、函数和别名

        向当前会话添加函数或别名,可以通过source来实现。

3、配置文件

        在一些情况下,系统或应用程序的配置文件需要在shell会话中重新加载,此时也可以使用source命令。

三、命令示例

1、一般的脚本文件

        假设有一个名为 vidisit_variables.sh 的脚本,内容如下:

#!/bin/bash 


MY_VARIABLE="Hello, !" 
echo "This is in the script: $MY_VARIABLE"

        如果只是简单地运行这个脚本(例如使用 ./vidisit_variables.sh  bash vidisit_variables.sh),那么 MY_VARIABLE 变量只会在子 shell 中存在,并在脚本结束后消失。

2、使用source的效果

        如果在脚本的同一 shell 会话中使用 source 命令运行它,那么 MY_VARIABLE 变量就会在当前 shell 会话中设置,并且可以在当前 shell 会话中访问它,如下所示: 

[root@ecs-52a1 home]# sh vidisit_variables.sh 
This is in the script: Hello, !
[root@ecs-52a1 home]#
[root@ecs-52a1 home]#echo $MY_VARIABLE

[root@ecs-52a1 home]#
[root@ecs-52a1 home]#
[root@ecs-52a1 home]# source vidisit_variables.sh 
This is in the script: Hello, !
[root@ecs-52a1 home]#
[root@ecs-52a1 home]#
[root@ecs-52a1 home]# echo $MY_VARIABLE
Hello, !
[root@ecs-52a1 home]#
[root@ecs-52a1 home]#

        可以看出,执行sh vidisit_variables.sh后,环境变量MY_VARIABLE也不存在了;但是使用source以后,再调用 echo $MY_VARIABLE,就可以看到它的值为“Hello, !”了。

四、使用 source 命令的重要性

1、修改当前 shell 会话的环境

        当你想要在当前 shell 会话中永久地(直到你关闭 shell 或注销)设置某些变量、函数或别名时,source 命令非常有用。

2、加载配置文件

        例如,.bashrc.bash_profile 和其他 shell 配置文件经常使用 source 命令来加载其他配置或初始化脚本。

3、在当前 shell 会话中测试脚本

        有时你可能想要在当前 shell 会话中测试脚本中的某些功能,而不是在子 shell 中。使用 source 命令可以确保你的更改在当前 shell 会话中生效。

五、其他事项

        1,使用 source 命令时,需要确保脚本具有执行权限(尽管在这种情况下,你实际上并没有直接执行它,而是读取并执行其内容)。但是,为了清晰起见和避免混淆,最好确保你的脚本具有适当的执行权限。

        2,谨慎使用 source 命令来加载不受信任的脚本,因为这可能会在当前 shell 会话中执行恶意代码。


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。