Linux中source命令的使用方式

Posted mb60bb27dcabfcd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中source命令的使用方式相关的知识,希望对你有一定的参考价值。

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\'

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

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

下面在定义一个变量:

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

\'Linux中source命令的使用方式_linux_02\'

创建一个脚本:

[root@localhost ~]# vim web.sh 

#!/bin/bash
echo $website

\'Linux中source命令的使用方式_linux_03\'

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

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

\'Linux中source命令的使用方式_linux_04\'

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

\'Linux中source命令的使用方式_linux_05\'

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

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

[root@localhost ~]# vim func.sh

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

\'Linux中source命令的使用方式_linux_06\'

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

[root@localhost ~]# source func.sh

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

[root@localhost ~]# foo
test function!

\'Linux中source命令的使用方式_linux_07\'

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

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

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

[root@localhost ~]# vim var.sh

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

\'Linux中source命令的使用方式_linux_08\'

再创建一个脚本,该脚本读取上一个脚本​​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_09\'

5. 读取并执行命令

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

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

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

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

[root@localhost ~]# source cmd.txt

\'Linux中source命令的使用方式_linux_10\'

总结

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


以上是关于Linux中source命令的使用方式的主要内容,如果未能解决你的问题,请参考以下文章

Linux source命令与脚本的执行方式对比

Linux Source命令及脚本的执行方式解析

linux中fork, source和exec的区别

shell 在脚本中执行了source /etc/profile 不生效

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?

为啥linux 的 source命令在linux的脚本中没有作用 我使用了#!/bin/sh以及#!/bin/bash 都不好用