Linux 中的源命令是什么以及它是如何工作的?

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

source filename [options]

您也可以使用 . (点)而不是像这样的源命令:

. filename [options]

源命令如何工作?

此命令的语法很简单,但要理解它需要对一些 Linux 概念进行更深入的了解。 如果您是 Linux 或编程的新手,您可能对变量是什么只有一个模糊的概念。

如果您听说过这个术语,但不知道它的确切含义,那没关系! 请记住,我们所有人都是从同一个地方开始的。 没有人会在早上突然醒来成为一名系统管理员或程序员。

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

如果您已经熟悉如何在 bash.

变量概述

你可以打开任何 bash 终端并创建新变量。 变量可以被认为是一个占位符,可用于将您的系统指向一条信息(字母、数字或符号)。

让我们看一个 example. 我将创建一个名为 name 的新变量,并将值分配给 Christopher。

在 bash,这是使用公式完成的: 变量名=你的变量. 中间不要加空格 = 符号和您的文本。

[email protected]:~$ name=Christopher
[email protected]:~$ echo $name
Christopher

如果我只输入变量名会发生什么?

[email protected]:~$ echo name
name

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

您的变量将被插入到它被调用的地方。 所以我也可以将它包含在这样的句子中:

[email protected]:~$ 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,它就会丢失。

相比之下,一个 环境变量 在您的操作系统中具有持久性。 这些变量通常使用全部大写来区分自己。

一个 example 其中是您的用户名,操作系统将其称为 $USER。

[email protected]:~$ echo $USER
christopher

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

不然跑起来没啥区别 来源bash. 为了说明这一点,我还准备了一个演示。

源与 Bash

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

Source 在当前 shell 中工作,不像运行 bash 它创建了一个新的外壳。 这并不明显,因为没有显示新窗口。

如果你跟着,这个将要求你编写一个非常简单的脚本(我们称之为 echo.sh),如下所示:

#! bin/bash

echo $USER
echo $name

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

[email protected]:~$ name=chris

接下来,我将向您展示当您在分配变量的同一终端中尝试所有 3 个命令时会发生什么。

[email protected]:~$ bash echo.sh 
christopher

[email protected]:~$ source echo.sh 
christopher
chris
[email protected]:~$ . echo.sh 
christopher
chris

如您所见,当您通过以下方式执行脚本时,无法识别您的局部变量 bash.

使用 source 命令刷新环境变量

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

用户可能想要修改他们的 bash profile 来创建一个别名。 通常,一旦您保存配置,您将需要打开一个新的终端窗口以进行更改。

[email protected]:~$ source .bashrc 

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

结论

我们希望您喜欢本教程的 source 命令。 与往常一样,请在评论部分告诉我们您的想法。 如果您喜欢这篇文章,请使用下面的按钮在社交媒体上分享。