Linux中source命令的使用方式

source命令在Linux中用于在当前shell会话中执行脚本或读取和执行命令,常用来刷新环境、执行脚本、导入函数及读取变量。通过source,可以避免在新的shell实例中丢失环境变量或函数。示例包括定义别名、执行脚本、导入函数以及从其他脚本中读取变量。source与exec命令的区别在于,source在当前shell中执行,而exec则会在新的shell中运行。
source命令是一个内置的shell命令,用于从当前shell会话中的文件读取和执行命令。source命令通常用于保留、更改当前shell中的环境变量。简而言之,source一个脚本,将会在当前shell中运行execute命令。

source命令可用于:

  • 刷新当前的shell环境
  • 在当前环境使用source执行Shell脚本
  • 从脚本中导入环境中一个Shell函数
  • 从另一个Shell脚本中读取变量

source命令的语法

source命令它需要一个文件,如果提供了参数,那么将用作传递脚本的位置参数。

source FILENAME [ARGUMENTS]

也可以使用.替代source命令:

. FILENAME [ARGUMENTS]

如何使用source命令

1. 刷新当前的shell环境

可以在当前的shell环境中定义一个别名。为ls -al定义一个别名为ll

[root@localhost ~]# echo "alias ll='ls -al'" >> ~/.bashrc 

在~/.bashrc文件中定义完别名,可以使用source命令刷新当前shell环境:

[root@localhost ~]# source ~/.bashrc 

现在可以使用ll别名列出当前目录里所有文件了,包括隐藏文件。

Linux中source命令的使用方式Linux中source命令的使用方式

2. 在当前环境使用source执行Shell脚本

Shell脚本不知道你在当前Shell环境中定义的变量。source命令可用于在当前会话中执行你的Shell脚本。

下面在定义一个变量:

[root@localhost ~]# website=https://www.linuxprobe.com

Linux中source命令的使用方式Linux中source命令的使用方式


创建一个脚本:

[root@localhost ~]# vim web.sh 

#!/bin/bash
echo $website

Linux中source命令的使用方式Linux中source命令的使用方式


使用source在当前shell会话中执行它:

[root@localhost ~]# source web.sh 
https://www.linuxprobe.com

Linux中source命令的使用方式Linux中source命令的使用方式


当使用sh运行脚本时,找不到环境中定义的变量:

Linux中source命令的使用方式Linux中source命令的使用方式

3. 从脚本中导入环境中一个Shell函数

首先创建一个脚本,定义一个函数:

[root@localhost ~]# vim func.sh

#!/bin/bash
foo(){
  echo "test function!"
}

Linux中source命令的使用方式Linux中source命令的使用方式


要在当前的shell会话中导入上述脚本的功能,使用下面命令:

[root@localhost ~]# source func.sh 

下面在终端中执行以下func.sh脚本中的foo函数试试:

[root@localhost ~]# foo
test function!

Linux中source命令的使用方式Linux中source命令的使用方式


source完脚本之后,可以看到在当前回话的终端中可以执行脚本里面的函数。

4. 从另一个Shell脚本中读取变量

首先创建带有一些变量的shell脚本,请输入:

[root@localhost ~]# vim var.sh

#!/bin/bash
a=1
b=2
c=3

Linux中source命令的使用方式Linux中source命令的使用方式


再创建一个脚本,该脚本读取上一个脚本var.sh中的变量:

[root@localhost ~]# vim read.sh 

#!/bin/bash
source ~/var.sh
echo $a
echo $b
echo $c

在脚本中首先使用source将var.sh中的变量到处到当前回话,然后echo显示变量值。下面执行read.sh看一下:

Linux中source命令的使用方式Linux中source命令的使用方式

5. 读取并执行命令

source命令可以从文件读取和执行命令。下面的一个文本文件中带有两个命令,使用source命令运行该文件,看看是否会执行里面的命令。

下面创建一个文件cmd.txt,保存两个命令:

[root@localhost ~]# cat cmd.txt 
ip ad
date

下面使用source执行这个文件:

[root@localhost ~]# source cmd.txt 

Linux中source命令的使用方式Linux中source命令的使用方式

总结

source命令在当前shell中执行脚本,而exec命令在新的shell中运行。

### Linux 中 `source` 命令用法、示例及其功能 #### 1. 定义与作用 `source` 是一个内置 Shell 命令,主要用于在当前 Shell 环境中执行脚本文件的内容。它不会创建新的子进程来运行脚本,而是在当前环境中逐行解释并执行脚本中的命令[^3]。 这种特性使得 `source` 特别适合用来加载配置文件或者更新当前 Shell 的环境变量。 --- #### 2. 基本语法 ```bash source 文件路径 ``` 或者使用点号作为替代形式: ```bash . 文件路径 ``` 这里的 `文件路径` 可以是绝对路径或相对路径。如果提供的是相对路径,则会基于当前工作目录解析文件的位置。 --- #### 3. 功能特点 - **不创建新 Shell**:与其他执行方式不同(如 `sh script.sh` 或 `./script.sh`),`source` 不会在独立的新进程中运行脚本,而是直接在调用它的 Shell 环境内处理脚本内容。 - **影响当前环境**:由于脚本是在现有 Shell 内部被执行,因此任何由脚本引发的变化——例如修改环境变量、定义函数等——都会保留下来并对后续的操作生效[^3]。 --- #### 4. 示例说明 ##### (1) 加载环境变量配置文件 假设有一个名为 `.env` 的文件,其中包含了若干导出的环境变量声明: ```bash # .env 文件内容 export MY_VAR="This is my variable" export ANOTHER_VAR=123 ``` 可以通过以下命令将其引入到当前会话中: ```bash source ./.env ``` 此时再次查询这些变量应能获取对应值: ```bash echo $MY_VAR # 输出: This is my variable echo $ANOTHER_VAR # 输出: 123 ``` ##### (2) 应用于初始化脚本 许多 Linux 发行版都提供了特定的初始化脚本供用户定制自己的登录体验。例如 Bash 用户通常编辑 `~/.bashrc` 文件来自定义提示符样式或其他交互细节。为了使更改立即生效而不是注销后再重新登录,可以这样操作: ```bash source ~/.bashrc ``` 这将重读该文件并将所有的设定应用到现有的终端实例之上。 ##### (3) 测试局部变化的影响 有时我们可能想在一个安全可控的方式下试验某些设置的效果而不永久改变全局状态。这时就可以写一个小片段放到临时文件里并通过 sourcing 来观察后果。比如测试不同的 PATH 配置是否会影响程序寻址顺序等等。 --- #### 5. 注意事项 - 如果试图 sourced 的是一个不具备可读权限的文件,将会抛出错误信息提醒无权访问。 - 当前仅限于支持 POSIX 标准兼容性的 shell 支持此关键字;对于非标准外壳可能会有不同的实现甚至完全缺失此类机制[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值