如何在Linux中将目录添加到PATH
在命令行上键入命令时,基本上是在告诉Shell运行具有给定名称的可执行文件。
在Linux中,这些可执行程序(例如'ls','find','file'等)通常位于系统上的几个不同目录中。
这些目录中存储的具有可执行权限的任何文件都可以从任何位置运行。
包含可执行程序的最常见目录是'/bin','/sbin','/usr/sbin','/usr/local/bin'和'/usr/local/sbin'。
但是,shell如何知道要搜索可执行程序的目录?
Shell是否搜索整个文件系统?
答案很简单。
当我们键入命令时,shell程序会在用户'$PATH'变量中指定的所有目录中搜索该名称的可执行文件。
本文介绍了如何在Linux系统中将目录添加到“ $PATH”。
在Linux中什么是“ $PATH”
“ $PATH”环境变量是用冒号分隔的目录列表,告诉shell程序哪些目录搜索可执行文件。
要检查“ $PATH”中的目录,可以使用“ printenv”或者“ 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"
'export'命令会将修改后的变量导出到Shell子进程环境。
现在,我们可以通过键入可执行脚本名称来运行脚本,而无需指定文件的完整路径。
但是,此更改只是临时的,仅在当前的Shell会话中有效。
要使更改永久生效,我们需要在shell配置文件中定义'$PATH'变量。
在大多数Linux发行版中,当我们开始新的会话时,将从以下文件中读取环境变量:
- 特定于全局Shell的配置文件,例如'/etc/environment'和'/etc/profile'。如果要将新目录添加到所有系统用户'$PATH',请使用此文件。
- 每用户shell程序特定的配置文件。例如,如果我们使用的是Bash,则可以在“~/.bashrc”文件中设置“ $PATH”变量。如果使用的是Zsh,则文件名为'~/.zshrc'。
在此示例中,我们将在“~/.bashrc”文件中设置变量。
使用文本编辑器打开文件,并在文件末尾添加以下行:
nano ~/.bashrc
~/.bashrc
export PATH="$HOME/bin:$PATH"
保存文件,并使用“ source”命令将新的“ $PATH”加载到当前的shell会话中:
source ~/.bashrc
要确认目录已成功添加,请键入以下内容以打印“ $PATH”的值:
echo $PATH