Linux中的source命令是什么,它如何工作?

时间:2020-03-05 15:29:42  来源:igfitidea点击:

source命令从当前shell中的文件执行命令。
它也可以用于刷新环境变量,说实话,source命令的主要用途是刷新环境变量。

source filename [options]

我们也可以使用. (点)来替代source命令,像下面这样:

. filename [options]

source命令如何工作?

该命令的语法很简单,但是要理解它,需要更深入地了解一些Linux概念。
如果我们是Linux或者编程的新手,则可能对变量是什么一无所知。

如果我们听过这个词,但不知道确切的意思,那就可以了!记住,我们所有人都是从完全相同的地方开始的。
早上,没有人突然成为系统管理员或者程序员。

在继续之前,我将给出一个简短的解释。

如果我们已经熟悉如何在bash中创建变量,则可以跳到下一个标题。

变量概述

我们可以打开任何bash终端并创建新变量。
变量可被视为占位符,可用于将系统指向一条信息(字母,数字或者符号)。

让我们看一个例子。
我将创建一个名为name的新变量,并分配值igi。

在bash中,这是使用以下公式完成的:variable_name = your_variable。
请勿在=符号和文本之间添加任何空格。

Hyman@theitroad:~$name=igi
Hyman@theitroad:~$echo $name
igi

如果我只输入变量名,该怎么办?

Hyman@theitroad:~$echo name
name

如果我们忘记了此符号,bash将返回我们输入的文本。
其中我告诉它回显或者打印“名称”。
如果没有$符号,bash将无法识别我们要使用已创建的变量。

变量将被插入到调用它的位置。
因此,我也可以将其包含在这样的句子中:

Hyman@theitroad:~$echo "Hello, $name. $name is a great name. It's good to meet you."
Hello, igi. igi is a great name. It's good to meet you.

我们可以使用变量做很多事情,但我希望入门足以使任何阅读本文的人都能理解它们的工作原理。

环境变量与shell变量

关于理解源命令的下一个关键,让我们谈谈持久性。
这是考虑shell和环境含量之间差异的简便方法。
我们还可以根据上下文从“可移植性”的角度来考虑它。

简而言之,如果在终端shell程序中创建变量,则退出该shell程序后该变量将丢失。

相反,环境变量在操作系统中具有持久性。

这些变量通常使用所有大写字母来区分自己。

例如,用户名被操作系统称为$USER。

Hyman@theitroad:~$echo $USER
igi

好的,因此我们花了很多时间来研究环境变量和shell变量之间的差异。
这与源有什么关系?
一切,真的。

否则,运行源代码和bash不会有任何区别。
为了说明这一点,我又安排了一个示范。

source vs Bash

如果我们使用Linux已有一段时间,那么我们可能会遇到这些命令,并认为它们做了相同的事情。
毕竟,这两个命令都可以用来执行脚本。

Source在当前shell中工作,与运行bash创建新shell不同。
这并不明显,因为没有显示新窗口。

如果我们继续这样做,则需要编写一个非常简单的脚本(将其称为echo.sh),如下所示:

#! bin/bash
echo $USER
echo $name

在终端中执行其他任何操作之前,请将名称分配给变量名称。

Hyman@theitroad:~$name=chris

接下来,将介绍在分配变量的同一终端中尝试所有3个命令时会发生什么。

Hyman@theitroad:~$bash echo.sh 
igi
Hyman@theitroad:~$source echo.sh 
igi
chris
Hyman@theitroad:~$. echo.sh 
igi
chris

如我们所见,通过bash执行脚本时,无法识别局部变量。

使用源命令刷新环境变量

Source也可以用于更新当前Shell中的环境变量。
此任务的常见应用程序是在当前shell中更新bash配置文件。

用户可能想要修改其bash配置文件以创建别名。

通常,一旦保存了配置,我们将需要打开一个新的终端窗口以进行更改。

Hyman@theitroad:~$source .bashrc

运行此命令将刷新当前shell程序中的设置,而不会强制我们打开新终端。