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 变量中添加它们的位置。
这在设置开发环境时很常见。 例如,假设您下载并安装了 Java 和 Maven。 为了使您的程序正常工作,您需要在 PATH 中指定 Maven 和 Java 二进制文件的位置。
这个快速教程是关于在 Linux 中设置 PATH。 除了这些步骤之外,我还会提到在处理 PATH 时应该注意的事项。
在 Linux 中将目录添加到 PATH
在 Linux 中向 PATH 变量添加新目录的过程本质上是这样的:
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
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 中的其他所有内容之前添加了附加目录:
PATH=your_directory:$PATH
如果您认为您的附加目录应该在所有其他目录之前搜索,您应该将它添加到 $PATH 之前,否则将它添加到 $PATH 之后。
够清楚了吗?
我试图用必要的细节来解释事情,但不会太深入细节。 坐是使主题清晰还是您比以前更困惑? 如果您仍有疑问,请在评论中告诉我。