如何在 Linux 中设置你的 $PATH 变量

告诉你的 Linux shell 在哪里查找可执行文件很容易,并且是每个人都应该能够做的事情。
699 位读者喜欢这个。
A path through nature

Thomas Hendele 在 Pixabay 上 (CC0)。由 Opensource.com 修改。CC BY-SA 4.0。

能够编辑你的 $PATH 对于任何初级 POSIX 用户来说都是一项重要的技能,无论你使用 LinuxBSD 还是 macOS。

当你在 Linux 或其他类 Linux 操作系统的命令提示符中键入命令时,你所做的只是告诉它运行一个程序。即使是简单的命令,如 lsmkdirrm 等也只是通常位于计算机上名为 /usr/bin 目录中的小程序。你的系统上还有其他地方也通常存放可执行程序;一些常见的包括 /usr/local/bin/usr/local/sbin/usr/sbin。哪些程序放在哪里,以及为什么,超出了本文的范围,但要知道可执行程序实际上可以位于计算机上的任何位置:它不一定局限于这些目录之一。

当你在 Linux shell 中键入命令时,它不会在每个目录中查找是否有同名的程序。它只查找你指定的目录。它是如何知道在上面提到的目录中查找的呢?这很简单:它们是一个名为 $PATH 的环境变量的一部分,你的 shell 会检查该变量以了解在哪里查找。

查看你的 PATH

有时,你可能希望将程序安装到计算机上的其他位置,但能够轻松执行它们,而无需指定它们的确切位置。你可以通过将目录添加到你的 $PATH 来轻松做到这一点。要查看你的 $PATH 中现在的内容,请在终端中键入此命令

echo $PATH

你可能会看到上面提到的目录,以及可能还有其他目录,它们都用冒号分隔。现在让我们向列表中添加另一个目录。

设置你的 PATH

假设你编写了一个名为 hello.sh 的小程序 shell 脚本,并将它放在一个名为 /place/with/the/file 的目录中。此脚本为你当前目录中的所有文件提供了一些有用的功能,你希望能够执行它,无论你身在哪个目录。

只需使用以下命令将 /place/with/the/file 添加到 $PATH 变量

export PATH=$PATH:/place/with/the/file

现在你应该能够在系统上的任何位置通过键入其名称来执行该脚本,而无需像键入时那样包含完整路径。

永久设置你的 PATH

但是,如果你重启计算机或创建新的终端实例会发生什么?你添加到路径中的内容消失了!这是设计使然。变量 $PATH 在你的 shell 每次启动时都会设置,但你可以将其设置为始终包含你的新路径,在你每次打开新的 shell 时都包含。具体方法取决于你正在运行的 shell。

不确定你正在运行哪个 shell?如果你使用几乎任何常见的 Linux 发行版,并且没有更改默认设置,那么你很可能正在运行 Bash。但是你可以使用一个简单的命令来确认这一点

echo $0

那是 “echo” 命令,后跟美元符号 ($) 和零。$0 表示命令的第零个段(在命令 echo $0 中,单词 “echo” 因此映射到 $1),或者换句话说,运行你的命令的东西。通常这是 Bash shell,尽管还有其他 shell,包括 Dash、Zsh、Tcsh、Ksh 和 Fish

对于 Bash,你只需将上面的行,export PATH=$PATH:/place/with/the/file,添加到你的 shell 启动时将读取的相应文件中。你可以在几个不同的位置设置变量名称:可能在名为 ~/.bash_profile~/.bashrc~/.profile 的文件中。这些文件之间的区别(主要)在于 shell 读取它们的时间。如果你不确定将其放在哪里,~/.bashrc 是一个不错的选择。

对于其他 shell,你将需要找到在启动时设置配置的适当位置;ksh 配置通常位于 ~/.kshrc 中,zsh 使用 ~/.zshrc。查看你的 shell 文档以查找它使用的文件。

这是一个简单的答案,还有更多值得学习的怪癖和细节。像 Linux 中的大多数事物一样,做事的方式不止一种,你可能会找到更符合你的情况或你的 Linux 发行版的特殊性的其他答案。祝你编程愉快,祝你好运,无论你的 $PATH 将你带到哪里。


本文最初于 2017 年 6 月发布,并由编辑更新了更多信息。

User profile image.
Jason 是 Opensource.com 的工作人员和红帽员工,从 2013 年到 2022 年。此个人资料包含他在此期间与工作相关的文章。其他贡献可以在他的个人账户中找到。
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。他曾在电影和计算机行业工作,通常同时进行。

4 条评论

感谢你的复习。由于我不经常使用该变量,所以我通常会忘记在需要执行此操作时如何设置它。

这种有用的信息是那种有时非常难以教给新手用户的解决方案之一。我认为这是因为它属于人们甚至没有意识到正在发生的幕后过程之一。

另一件值得一提的事情是 $PATH 实际上就是路径,用于在你的系统查找可执行文件时遵循。了解这一点很重要,以防在不同位置存在同一可执行文件的两个版本,将使用的版本将是 $PATH 中的第一个版本,因此换句话说,一旦找到实例就停止查找。

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.