怎样在 Linux 中将目录添加到 PATH [Quick Tip]

Linux 中的 PATH 变量存储了运行命令时应在其中查找可执行文件的目录的路径。

[email protected]:~$ 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 变量中添加它们的位置。

这在设置开发环境时很常见。 为了 example,假设您下载并安装了 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:/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 是否已正确更新。

[email protected]:~$ 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

如果您希望 Linux 系统上的每个人都可以使用修改后的 PATH 变量,您可以将导出添加到 /etc/profile 文件中。 当您是系统管理员并且配置了带有自定义路径的系统时,这很合适。

额外提示:目录在 PATH 中优先

PATH 变量中有几个目录。 当您运行可执行文件/命令时,您的系统会按照 PATH 变量中提到的相同顺序查看目录。

如果 /usr/local/sbin 在 /usr/bin 之前,则首先在 /usr/local/sbin 中搜索可执行文件。 如果找到可执行文件,则搜索结束并执行该可执行文件。

这就是为什么您会找到一些示例,其中在 PATH 中的其他所有内容之前添加了附加目录:

export PATH=your_directory:$PATH

如果您认为您的附加目录应该在所有其他目录之前搜索,您应该将它添加到 $PATH 之前,否则将它添加到 $PATH 之后。

够清楚了吗?

我试图用必要的细节来解释事情,但不会太深入细节。 坐是使主题清晰还是您比以前更困惑? 如果您仍有疑问,请在评测中告诉我。



相关阅读:

Posted in: LinuxTags: