如何在 Linux 中添加目录到 PATH如何在 Linux 中添加目录到 PATH如何在 Linux 中添加目录到 PATH如何在 Linux 中添加目录到 PATH
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 中添加目录到 PATH

PATH 是 Linux shell 中预定义的变量。它由目录及其目录路径组成,从根开始。 PATH 是一个以冒号分隔的列表。每个目录及其路径与前一个目录及其路径用冒号分隔。 shell 在这些目录中查找命令。

命令不仅仅是磁盘操作系统命令。路径是 shell 在其中查找操作系统命令和其他命令的目录列表。命令就像短程序文件。因此,命令是可执行的。计算机中安装的每个应用程序都带有一个可执行文件。为了运行应用程序,首先使用可执行文件。这些可执行文件也称为命令。

如果没有 PATH 变量,每个命令都将使用绝对路径来命令,如下所示:

/home/john/dir1/dir2/command.exe

其中第一个/是根目录; john 是用户 John 的用户目录; dir1和dir2是子目录; command.exe 是可执行文件的名称。

可执行文件还可以有许多其他名称。其实command.exe在这里是象征性的。因此,如果目录 /home/john/dir1/dir2 (没有文件)位于 PATH 变量中,则用户 john 将在提示符下执行 command.exe,john@host:~$只需键入 command .exe,没有前面的路径。那是:

john@host:~$ command.exe

然后按 Enter 键。

要查看计算机中当前 PATH 目录的列表,请键入:

$ echo $PATH

然后在终端按 Enter 键。结果会是这样的,

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

现在的问题是:如何将目录(及其前面的路径)添加到 PATH 变量中?对于某些安装,会自动添加该目录。对于其他的,必须手动添加。本文主要介绍两种添加目录的方式。该目录不会像对数组那样添加(包含)。两种主要方式称为临时添加和永久添加。 Bash 是用于本文中的代码示例的 shell。

文章内容

  • 简介 – 见上文

  • 临时添加

  • 永久添加

  • 结论

临时添加

临时加法意味着加法仅发生在内存中。当计算机重新启动时,它不会被保存以供使用。

Bourne Shell 内置导出命令

简单来说,导出命令就是:

$ export [name[=value]]

在这种情况下,它会为内存中的变量重新分配一个值。

内存中的 PATH 变量可能已经具有如下值:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/垃圾箱

假设要添加的目录为/home/john/dir1/dir2。如果导出命令键入为,

$ export PATH=/home/john/dir1/dir2

那么 /home/john/dir1/dir2 将替换内存中已有的所有内容作为 PATH 变量的值。

如果导出命令键入为,

$ export PATH=$PATH:/home/john/dir1/dir2

然后, /home/john/dir1/dir2 会将其自身附加到变量中已有内容的末尾。因此,新变量将是:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/ bin:/home/john/dir1/dir2

请注意,在上面的前一行代码中,已经存在的值部分与新部分用冒号分隔,即“:”。 ` 代码行中的 PATH,将扩展(替换)为内存中已有的 PATH 值。

现在,同一个命令可以位于多个目录中。当在提示符下键入不带前面路径的可执行命令时,shell 开始从左到右在内存中搜索 PATH 变量的值(字符串)。因此,通过上面的代码行,/home/john/dir1/dir2 将在搜索中最后到达。谁希望他的目录最后到达? - 没有人。因此,包含(添加)目录的更好方法如下:

$ export PATH=/home/john/dir1/dir2:$PATH

/home/john/dir1/dir2 现在位于开头,与下一个目录用冒号分隔。因此,提示“john@host:~$”,

john@host:~$ export PATH=/home/john/dir1/dir2:$PATH

键入并按 Enter 键后,将执行目录 dir2 中的命令 command.exe:

john@host:~$ command.exe

只要计算机没有关闭,用户就会继续执行command.exe,而无需键入前面的路径。

当计算机关闭时,随机存取存储器中的所有内容都会被擦除。坏消息是,计算机用户每次重新启动计算机时都必须重复将其目录添加到 PATH 变量的过程。今天没有人愿意这样做。因此,永久添加方法是推荐的方法。也就是说,对 PATH 的添加必须保存(到硬盘中)。

永久添加

从上面的讨论来看,我们的想法是保存所做的更改(保存到硬盘中)。因此,如果将更改保存到每次计算机启动时 shell 都会读取的文件中,那就没问题了。也就是说,每次计算机启动时,内存中的PATH变量都会相应更新。当计算机启动时,它会读取某些文件。 Linux 的 Bash shell 读取的文件之一是 ~/.bashrc 。文件名是 .bashrc ,以点开头。它位于用户的目录中。

Bash 只是一种 shell,可能是当今 Linux 上最流行的 shell。 Linux 的另一个 shell 是 Zsh。对于 Zsh,相应的文件是 ~/.zshrc,仍在用户目录中。当 shell 启动时,它会读取此文件。对于 Bash,该文件是 ~/.bashrc 。因此,如果将上述添加代码键入 ~/.bashrc 文件中,则该目录将始终位于内存中,因为每次计算机启动时 ~/.bashrc 始终将其包含在 PATH 中。它保留在内存中,直到计算机关闭。

在Bash中,~/.bashrc是一个隐藏文件,所以普通使用命令ls不会显示它。 ~/.bashrc 包含一些 Bash (shell) 命令。 Ubuntu 是 Linux 的一个变体。 Ubuntu 带有一个文本编辑器。在笔者的电脑中,Ubuntu文本编辑器的背景是黑色的。

上述添加命令(无提示)应包含在 ~/.bashrc 文件中。最好将其添加到文件末尾,以免影响其可用内容,这可能可以正常工作。

要在 Ubuntu 中打开 ~/.bashrc,请在终端的命令提示符下键入以下内容,然后按 Enter:

$ nano ~/.bashrc

其中nano是文本编辑器。这里,nano 是一个命令(可执行),其参数是 ~/.bashrc 。文件的内容应在文本编辑器中打开以覆盖终端窗口。

~/.bashrc 文件将在文本编辑器中打开,可能具有黑色背景。光标将在左上角闪烁。

连续按键盘上的向下箭头键,直到光标到达文件末尾。添加新行,

$ export PATH=/home/john/dir1/dir2:$PATH

这还不是全部。对 ~/.bashrc 文件的更改尚未保存。要保存所做更改的文件,请按 Ctrl+o,然后按照出现的任何其他说明进行操作。要退出文本编辑器,请按 Ctrl+x,普通终端窗口将取代文本编辑器窗口。然后可以发出其他 shell 命令。

如果发出“echo ` PATH”,则显示屏中将看不到新目录。有两种方法可以从这里继续:重新启动计算机,或者使用 source 命令将 ~/.bashrc 文件的新内容放入内存。使用source命令很简单,如下:

$ source ~/.bashrc

如果在没有重新启动的情况下发出源命令,则“echo ` PATH ”将在结果中显示添加的新目录(显示)。然后可以键入感兴趣的命令,而无需前面的路径。

注意: 不要混淆 PATH 值(列表)的结尾和 ~/.bashrc 文件的结尾。另外,不要混淆内存中 PATH 中的目录和硬盘中目录中的可执行文件。

结论

PATH 是 Linux shell 中的内置变量。 PATH 的值是由冒号分隔的目录列表。硬盘中每个目录都有一个命令(可执行文件)。如果在 sell 时发出命令而前面没有路径,则 shell 将在这些目录中查找该命令。如果它在任何目录中都没有看到该命令,则该命令将不会被执行。在这种情况下,为了执行该命令,命令前面必须带有其路径。该命令可以位于 PATH 值中的多个目录中。一旦 shell 发现第一个目录包含该命令,它就会执行该命令。 PATH 值实际上是一个由冒号分隔的目录组成的字符串。

问题是如何将新应用程序的可执行文件的目录添加到 PATH 中。在某些情况下,这是由新应用程序的安装程序自动完成的。在其他情况下,必须手动完成。有两种手动执行的方法,称为:临时添加和永久添加。临时添加使用导出命令,仅在计算机打开时添加目录。永久添加必须将导出命令行保存到 ~/.bashrc 初始化文件(Bash)中以供将来操作。

©2015-2025 艾丽卡 support@alaica.com