当您在命令行上键入命令时,您基本上是在告诉 shell 运行具有给定名称的可执行文件。在Linux中,这些可执行程序就像ls
, find
, file和其他文件,通常位于系统上的几个不同目录中。存储在这些目录中的任何具有可执行权限的文件都可以从任何位置运行。保存可执行程序的最常见目录是/bin
, /sbin
, /usr/sbin
, /usr/local/bin
and /usr/local/sbin
.
但是 shell 如何知道在哪些目录中搜索可执行程序呢? shell 是否搜索整个文件系统?
答案很简单。当您键入命令时,shell 会搜索用户中指定的所有目录$PATH
该名称的可执行文件的变量。
本文展示了如何将目录添加到您的$PATH
在Linux系统中。
What is $PATH
在Linux中#
The $PATH
环境变量是一个以冒号分隔的目录列表,告诉 shell 在哪些目录中搜索可执行文件。
检查您的目录中有哪些目录$PATH
,您可以使用printenv
or echo命令:
echo $PATH
输出将如下所示:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
如果两个可执行文件共享相同的名称,位于两个不同的目录中,则 shell 将运行该目录中第一个目录中的文件。$PATH
.
将目录添加到您的$PATH
#
在某些情况下,您可能希望将其他目录添加到$PATH
多变的。例如,某些程序可能安装在不同的位置,或者您可能希望为您的个人脚本提供一个专用目录,但无需指定可执行文件的绝对路径即可运行它们。为此,您只需将该目录添加到您的$PATH
.
假设您有一个名为bin
位于保存 shell 脚本的主目录中。将该目录添加到您的$PATH
输入:
export PATH="$HOME/bin:$PATH"
The export
命令会将修改后的变量导出到 shell 子进程环境。
现在,您可以通过键入可执行脚本名称来运行脚本,而无需指定文件的完整路径。
但是,此更改只是暂时的,并且仅在当前 shell 会话中有效。
要使更改永久生效,您需要定义$PATH
shell 配置文件中的变量。在大多数 Linux 发行版中,当您启动新会话时,将从以下文件中读取环境变量:
在此示例中,我们将在~/.bashrc
文件。使用您的打开文件文本编辑器并在其末尾添加以下行:
nano ~/.bashrc
~/.bashrc
export PATH="$HOME/bin:$PATH"
保存文件并加载新文件$PATH
使用以下命令进入当前 shell 会话source命令:
source ~/.bashrc
要确认目录已成功添加,请打印您的值$PATH
通过输入:
echo $PATH
结论#
向您的用户或全局添加新目录$PATH
变量非常简单。这允许您执行存储在非标准位置的命令和脚本,而无需键入可执行文件的完整路径。
相同的说明适用于任何 Linux 发行版,包括 Ubuntu、CentOS、RHEL、Debian 和 Linux Mint。
如果您有任何疑问,请随时发表评论。