Linux中的source命令是什么,它如何工作?
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程序中的设置,而不会强制我们打开新终端。