Linux 中的 Source 命令是什么以及它如何工作?
source 命令在当前 shell 中执行文件中的命令。它还可用于刷新环境变量,说实话,source 命令的主要用途就是刷新环境变量。
source filename [options]
您还可以使用 . (点)代替 source 命令,如下所示:
. filename [options]
source 命令如何工作?
此命令的语法很简单,但要理解它需要稍微深入了解一些 Linux 概念。如果您是 Linux 或编程新手,您可能对变量的含义只有一个模糊的概念。
如果您听说过这个术语,但不知道它的具体含义,没关系!请记住,我们所有人都是从同一个地方开始的。没有人早上醒来就突然成为系统管理员或程序员。
在继续之前我将做一个简短的解释。
如果你已经熟悉如何在 bash 中创建变量,你可以跳到下一个标题。
变量概述
您可以打开任何 bash 终端并创建新变量。变量可以看作是一个占位符,可用于将系统指向某条信息(字母、数字或符号)。
让我们看一个例子。我将创建一个名为 name 的新变量,并将其值赋给 Christopher。
在 bash 中,使用以下公式完成此操作:variable_name=your_variable。请勿在=符号和文本之间添加任何空格。
christopher@linux:~$ name=Christopher
christopher@linux:~$ echo $name
Christopher
如果我只是输入变量名称会发生什么?
christopher@linux:~$ echo name
name
如果您忘记了这个符号,bash 将返回您输入的文本。在这里,我告诉它回显或打印“name”。如果没有 $ 符号,bash 无法识别您想要使用您创建的变量。
您的变量将被插入到调用它的位置。所以我也可以将它包含在这样的句子中:
christopher@linux:~$ echo "Hello, $name. $name is a great name. It's good to meet you."
Hello, Christopher. Christopher is a great name. It's good to meet you.
使用变量可以做很多事情,但我希望这篇入门文章足以让任何读到这篇文章的人了解它们的工作原理。
环境变量与 shell 变量
理解 source 命令的下一个关键点是持久性。这是思考 shell 和环境内容之间差异的简单方法。根据上下文,您也可以从“可移植性”的角度来思考它。
简单地说,如果您在终端 shell 中创建一个变量,那么一旦退出该 shell,该变量就会丢失。
相比之下,环境变量在操作系统中具有持久性。这些变量通常使用大写字母来区分自己。
例如,您的用户名在操作系统中被称为 $USER。
christopher@linux:~$ echo $USER
christopher
好的,您花了不少时间讨论环境变量和 shell 变量之间的区别。那和source有什么关系?实际上,一切都有关系。
否则,运行source和bash就没什么区别了。为了说明这一点,我准备了另一个演示。
来源与 Bash
如果你已经接触过 Linux 一段时间,你可能遇到过这些命令,并认为它们的作用相同。毕竟,这两个命令都可用于执行脚本。
Source 在当前 shell 中工作,而运行 bash 则会创建一个新 shell。这一点并不明显,因为不会显示任何新窗口。
如果你按照这个步骤做的话,你需要编写一个非常简单的脚本(我们称之为 echo.sh),如下所示:
#! bin/bash
echo $USER
echo $name
在终端上执行任何其他操作之前,请将您的名字分配给变量名称。
christopher@linux:~$ name=chris
接下来,我将向您展示当您在分配变量的同一终端中尝试所有 3 个命令时会发生什么。
christopher@linux:~$ bash echo.sh
christopher
christopher@linux:~$ source echo.sh
christopher
chris
christopher@linux:~$ . echo.sh
christopher
chris
如您所见,当您通过bash执行脚本时,您的局部变量无法被识别。
使用 source 命令刷新环境变量
Source 还可用于更新当前 shell 中的环境变量。此任务的常见应用是更新当前 shell 中的 bash 配置文件。
用户可能想要修改他们的 bash 配置文件,例如创建别名。通常,一旦保存配置,您将需要打开一个新的终端窗口以使更改生效。
christopher@linux:~$ source .bashrc
运行此命令将刷新当前 shell 中的设置,而无需强制您打开新终端。
结论
我们希望您喜欢本教程中的 source 命令。与往常一样,请在评论部分告诉我们您的想法。如果您喜欢这篇文章,请使用下面的按钮在社交媒体上分享。