3.12 找出将要运行的命令的版本

which

回想一下whereis命令,以及用-b选项只查询KWord的二进制文件信息时发生的情况。

  1. $ whereis -b kword
  2. kword: /usr/bin/kword /usr/bin/X11/kword

在两个位置都有KWord的可执行文件。但是哪一个文件会先运行呢?运行which命令就可以得到答案。

  1. $ which kword
  2. /usr/bin/kword

只要输入命令的名称,which命令就能告诉你这个命令的哪个版本将会运行。换句话说,如果你输入kword,然后按Enter键,shell将会执行/usr/bin目录下找到的kword程序。如果想运行/usr/bin/X11目录下的版本,必须用cd命令切换目录,然后输入./kword,或者是使用那个命令的绝对路径,输入/usr/bin/X11/kword

which命令也是一种快速判断系统中是否存在特定命令的方法。如果在你的系统中有相应的命令,而且也在PATH中,which命令将告诉你在哪可以找到这个命令。如果命令不存在,将不在命令行中返回任何信息。

  1. $ which arglebargle
  2. $

如果要查找命令的所有位置(就像使用whereis –b一样),则可以使用-a(表示all)选项。

  1. $ which -a kword
  2. /usr/bin/kword
  3. /usr/bin/X11/kword