如何在 Linux 中添加目录到 PATH
了解有关将目录添加到 Linux 中的 PATH 并永久进行这些更改的所有基本步骤。
Linux 中的 PATH 变量存储运行命令时应在其中查找可执行文件的目录的路径。
abhishek@its-foss:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
正如您所看到的,PATH 由多个目录组成(例如 /usr/local/sbin、/usr/bin 等),并用冒号 (:) 分隔。
如果您想从系统中的任何位置将某些可执行文件作为命令运行,则应将它们的位置添加到 PATH 变量中。
这在设置开发环境时很常见。例如,假设您下载并安装了 Java 和 Maven。为了让你的程序正常工作,你需要在 PATH 中指定 Maven 和 Java 的二进制文件的位置。
这个快速教程是关于在 Linux 中设置 PATH 的。除了步骤之外,我还会提到处理 PATH 时应该注意的事项。
在 Linux 中添加目录到 PATH
在 Linux 中向 PATH 变量添加新目录的过程本质上是这样的:
export PATH=$PATH:your_directory
其中 your_directory
是相关目录的绝对路径。
假设您下载 Maven 并将其解压到主目录,并且想要将其 bin 目录添加到 PATH。假设这个bin目录的绝对路径是/home/abhishek/maven/apache-maven-3.8.0/bin。
这是你应该做的:
导出 PATH=` PATH:/home/abhishek/maven/apache-maven-3.8.0/bin
export PATH=$PATH:/home/abhishek/maven/apache-maven-3.8.0/bin
这里注意事项:
变量名前的 $表示您正在引用它的值。 PATH 是变量名,` PATH 是变量 PATH 的值。
不应将 $与=左侧的 PATH 一起使用
= 前后不能有空格
不要忘记在 ` PATH 之后包含 : ,因为 PATH 中的目录是用冒号分隔的。
冒号 (:) 前后不得有空格。
使用新值设置 PATH 后,请检查 PATH 是否已正确更新。
abhishek@its-foss:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/abhishek/maven/apache-maven-3.8.0/bin
您可能想要运行修改了 PATH 的命令或脚本。这将告诉您 PATH 现在是否设置正确。
使对 PATH 的更改永久生效
您已将所需目录添加到 PATH 变量,但更改是临时的。如果退出终端、退出会话或从系统注销,PATH 将恢复,并且更改将丢失。
如果您想要对 PATH 变量进行永久更改,则可以将其添加到主目录中的 .bashrc 文件中(假设您使用的是 Bash shell)。
您可以使用 Nano 或 Vim 等文本编辑器来完成此任务。
nano ~/.bashrc
如果您希望修改后的 PATH 变量可供 Linux 系统上的每个人使用,您可以将导出添加到 /etc/profile 文件中。当您是系统管理员并且拥有带有自定义路径的配置系统时,这适用于您。
?以简化视图查看路径
对于某些人来说,读取 PATH 变量值并找出目录可能很复杂。您可以使用 tr 命令格式化其输出,使其更易于阅读。
echo $PATH | tr ':' '\n'
这是一个例子:
额外提示:目录在 PATH 中优先
PATH 变量中有几个目录。当您运行可执行文件/命令时,系统会按照 PATH 变量中提到的相同顺序查找目录。
如果 /usr/local/sbin 位于 /usr/bin 之前,则首先在 /usr/local/sbin 中搜索可执行文件。如果找到可执行文件,则搜索结束并执行可执行文件。
这就是为什么您会发现一些示例,其中附加目录添加在 PATH 中的其他所有内容之前:
export PATH=your_directory:$PATH
如果您认为应该在其他所有内容之前搜索附加目录,则应该将其添加到 ` PATH; 之前否则,将其添加到 ` PATH 之后。
说得够清楚了吗?
我强烈建议阅读 Linux 中绝对路径和相对路径的概念。它会让您更好地理解该主题。
我试图用必要的细节来解释事情,但不会太深入细节。它是否让主题变得清晰,或者你比以前更困惑了?如果您仍有疑问,请在评论中告诉我。