如何使用 Linux source 命令读取并执行文件
Linux source 命令是一个内置的 shell,它在当前 shell 中读取并执行文件。以下是在 Linux 上使用它的方法。
source 是一个方便的内置 shell 命令,它接受参数、解析脚本中的命令并在 shell 环境中执行它们。文件的内容由源读取,然后传递给工具命令语言 (TCL) 解释器,由该解释器执行命令。
让我们学习如何使用 source 来执行命令并在 Linux 上使用 shell 环境,并简要说明它与 bash 命令的区别。
使用源执行文件中的命令
要使用 source 命令,您首先需要创建一个示例文件并使用一些 shell 命令填充它。首先使用 touch 命令创建一个新文件。在您选择的文本编辑器中打开该文件并编写一些基本的 shell 命令。
touch test.txt
vi test.txt
# Write the commands in the text file:
echo "Hello!"
pwd
ls
# Source the file with either source or the dot syntax
. test.txt
source text.txt写出文本文件并继续将其作为参数传递给源命令。系统将执行文件中的命令并返回输出。
现在您已经了解了如何使用源代码的基础知识,让我们尝试更改 Bash shell 环境。但是,在继续之前,您必须对 Linux 中的环境变量有基本的了解。
使用 source 命令更新 Bash Shell 环境
在 Linux 上,环境变量是继承的但不可变的。如果执行修改环境变量 $TEST 的 Bash shell 脚本,该脚本将生成一个新的分叉 shell 进程,并且 $TEST 的修改将在其中进行,而不是在原始 Bash 环境中进行。
子进程将无法修改父进程的环境。它只能修改自己的环境。让我们通过一个实际的例子来理解这一点:
export TEST="deb"
vi example
# Type these commands in the file
export TEST="bed"
echo $TEST
# Write out the file, make it executable, and then execute it
chmod +x example
./example # this will return "bed"
echo $TEST # this will return "deb"这就是 source 命令发挥作用的地方。使用 source 命令,您可以在同一 shell 环境中执行脚本,否则该脚本将被分叉。因此,如果您获取一个修改环境变量的脚本,它将对 Bash shell 环境进行更改。
要测试它,请将上面代码框中的命令写入新文件中,并使用 source 命令而不是使其可执行。
# Create a new file and edit it
vi test file
. test_file
echo $TEST # This will return "bed"如您所见,使用 source 命令,您可以更新父进程的环境变量。这是 source 命令的主要用例,即修改父环境。
这就是使用 source 命令更新 Bash shell 环境所需的所有步骤。
Linux bash 和 source 命令之间的区别
Linux bash 和 source 命令的区别在于,当你用 bash 命令执行脚本时,它告诉 Linux 内核创建一个新的 Bash 进程来读取并执行该脚本,将输出复制到原始 shell 进程中,并显示出来。
但 source 命令是一个内置的 shell,它读取并评估当前 shell 进程中的文件。因此,脚本所做的所有更改都将保留在 Bash shell 中。
排除源命令错误
在某些 Linux 系统中,您在尝试使用 source 命令时可能会遇到“找不到源”错误。您可以通过两种方式修复此错误:
1. 更换外壳
某些 shell 不支持 source 命令。在这种情况下,您需要使用 chsh -s ($which shell_name) 命令更改 shell 环境。
更改 shell 后启动新终端,然后尝试使用 source 命令。如果新的 shell 支持采购,那么它应该可以完美地工作。
2. 使用点/句点语法
某些 shell 环境不支持“source”语法,但支持替代的“.”语法。 “源”语法是 Bash 中点的同义词。但这在 POSIX shell 中不起作用,因此为了获得最大兼容性,请使用句点语法。
你应该知道的基本 Linux 命令
Linux shell 命令是使用终端与系统交互的好方法。它们是使用 *NIX 系统的本质。
虽然您不需要了解所有命令,但当您深入 Linux 世界时,熟悉一些有用的命令肯定会取得丰硕成果。



