系统管理指南:高级管理

Procedure如何诊断和更正搜索路径问题

  1. 显示当前搜索路径,以验证命令的目录是否不在路径中,或验证该路径是否有拼写错误。


    $ echo $PATH 
    
  2. 检查以下各项:

    • 搜索路径是否正确?

    • 该搜索路径是否在找到了该命令另一个版本的其他搜索路径之前列出?

    • 命令是否位于其中一个搜索路径中?

    如果需要更正路径,请转到步骤 3。否则,请转到步骤 4。

  3. 将路径添加到相应文件,如下表所示。

    Shell 

    文件 

    语法 

    说明 

    Bourne 和 Korn 

    $HOME/.profile

    $ PATH=$HOME/bin:/sbin:/usr/local /bin ...

    $ export PATH

    用冒号分隔路径名。 

    $HOME/.cshrc

    或 

    $HOME/.login

    hostname% set path=( ~bin /sbin /usr/local/bin ...)

    用空格分隔路径名。 

  4. 按以下方式激活新路径:

    Shell 

    路径所在的文件 

    激活路径的命令 

    Bourne 和 Korn 

    .profile

    $ . ./.profile

    .cshrc

    hostname% source .cshrc

     

    .login

    hostname% source .login

  5. 验证新路径。


    $ which command
    

示例 19–1 诊断和更正搜索路径问题

此示例显示执行 which 命令后发现,mytool 可执行文件并不存在于搜索路径中的任何目录内。


venus% mytool
mytool: Command not found
venus% which mytool
no mytool in /sbin /usr/sbin /usr/bin /etc /home/ignatz/bin  .
venus% echo $PATH
/sbin /usr/sbin /usr/bin /etc /home/ignatz/bin
venus% vi ~/.cshrc
(Add appropriate command directory to the search path)
venus% source .cshrc
venus% mytool

如果找不到某一命令,请在手册页中查看其目录路径。例如,如果找不到 lpsched 命令(lp 打印机守护进程),lpsched(1M) 手册页会告知您路径是 /usr/lib/lp/lpsched