本文讨论了一个重要的 Linux shell 环境变量,称为PATH,以及如何向该变量添加目录。

通常,您在 Linux 系统上运行的大多数程序都可以完美运行,并且您的 shell 在执行时不会出现任何错误。但是,有时您可能希望从 Linux 系统上的非标准目录快速运行自定义脚本或程序。

在这种情况下,您需要将它们的源目录添加到 shell 的 PATH 变量中,以便它知道在哪里可以找到它们。

路径环境变量用于什么?

环境变量控制 shell 的行为。如果您曾经 在 Linux 上使用过命令行,系统将依赖 PATH 变量来查找您正在输入的命令的位置。

PATH 是 Linux 中的一个内置环境变量,它告诉 shell 在哪些目录中搜索可执行文件以响应用户或应用程序发出的命令。它包含以冒号分隔的目录列表,用于查找您输入的命令。

如何在 Linux 中将目录添加到 PATH

要立即查看 PATH 中的内容,请在终端中输入:

linuxmi@linuxmi:~/www.linuxmi.com$ echo $PATH

如您所见,此变量中的目录由冒号 ( :) 分隔。目前,shell 在以下目录中搜索二进制可执行文件:

  • /home/linuxmi/.nvm/versions/node/v17.4.0/bin
  • /home/linuxmi/.cargo/bin
  • /home/linuxmi/.local/bin
  • /usr/local/bin
  • /usr/local/sbin
  • /usr/local/bin
  • /usr/sbin
  • /usr/bin
  • /sbin
  • /bin
  • /usr/games
  • /usr/local/games
  • /snap/bin
  • /opt/mssql-tools/bin

搜索 PATH 的顺序也很重要。因此,如果您有两个共享相同名称的可执行文件位于两个不同的目录中,则 shell 将运行位于 PATH 中第一个目录中的文件。

临时将目录添加到 PATH

现在假设您已经创建了一个位于/srv/scripts目录中的自定义 shell 脚本,并且您希望将此目录添加到您的 PATH 变量中。这是你应该做的:

为了让事情更清楚,让我们分解一下这个语法。以下是每个参数的含义:

  • 该 export 命令会将修改后的PATH变量导出到 shell 子进程环境。
  • 变量名之前的$意思是你指的是它的值。
  • :/srv/scripts部分指定:符号后面的内容应附加到当前 PATH 变量中包含的值。

让我们看看 PATH 现在的样子:

linuxmi@linuxmi:~/www.linuxmi.com$ echo $PATH

正如您在上面的输出中看到的,该 /srv/scripts 目录被添加到 PATH 变量的末尾。现在,您存储在 /srv/scripts 目录中的文件可以在任何地方执行,而无需指定它们的完整路径。

此外,如果您认为您的目录应该在其他所有内容之前被搜索,您可以将其添加到$PATH

请务必注意,如果您退出终端或从系统注销,PATH 将恢复并且更改将丢失,因为这种设置 PATH 的方法仅在当前终端会话期间临时记住更改。

要使其永久化,请查看以下部分。

将目录永久添加到 PATH

要使更改永久生效,您需要在 shell 配置文件中定义 PATH 变量。

默认系统范围的 PATH 值在 /etc/profile 文件中指定。将目录添加到单个用户的路径的最佳位置是修改该用户的.bashrc文件。

使用文本编辑器打开文件,滚动到文件底部,并在文件末尾添加以下行:

linuxmi@linuxmi:~/www.linuxmi.com$ vim ~/.bashrc

~/.bashrc

export PATH=$PATH:/srv/scripts

source最后,保存文件并使用以下命令将新的 PATH 加载到当前 shell 会话中:

要确认目录已成功添加,请键入以下 echo 命令检查路径:

linuxmi@linuxmi:~/www.linuxmi.com$ echo $PATH

结论

在Linux中向您的用户或全局 PATH 变量添加新目录非常简单。在本文中,我们了解到有两种方法可以做到这一点:暂时的和永久的。

如果您仍有疑问,请在评论中告诉我。

发表回复