当用户使用全路径执行命令时,shell 将使用该路径来查找此命令。但是,当用户仅指定命令名称时,shell 将按 PATH 变量指定的顺序在目录中搜索该命令。如果在一个目录中找到了该命令,shell 将执行该命令。
缺省路径由系统设置。但是,多数用户会通过修改该路径来添加其他命令目录。与设置环境和访问命令或工具的正确版本有关的许多用户问题都是路径定义错误引起的。
下面是设置有效 PATH 变量的一些准则:
如果无需考虑安全问题,请首先将当前的工作目录 (.) 放置在该路径中。但是,在路径中包括当前的工作目录会引起您可能希望避免的安全风险,对于超级用户尤其如此。
搜索路径应尽可能短。Shell 会在该路径中搜索每个目录。如果未找到命令,搜索长目录会降低系统性能。
搜索路径的读取顺序是从左到右,因此,您应当将常用命令的目录放在路径的开头。
确保目录在路径中不重复。
尽可能避免搜索大型目录。将大型目录放在路径的末尾处。
将本地目录放在 NFS 挂载目录之前,以便减少在 NFS 服务器不响应时“挂起”的几率。此策略还会减少不必要的网络通信流量。
此示例说明如何设置用户的缺省路径。
以下示例说明如何设置用户的缺省路径,以包括起始目录和其他 NFS 挂载目录。首先在该路径中指定当前的工作目录。在 C shell 用户初始化文件中,可以添加如下内容:
set path=(. /usr/bin $HOME/bin /net/glrr/files1/bin) |
在 Bourne shell 或 Korn shell 用户初始化文件中,可以添加如下内容:
PATH=.:/usr/bin:/$HOME/bin:/net/glrr/files1/bin export PATH |