如何可靠地在PATH上找到程序的完整路径?
我需要PATH使用shell脚本找到给定程序的路径。该路径必须是程序的实际完整路径,以后可以传递给其中一个exec*不搜索PATH自身的函数,例如execv。 有类似的程序kill,它们既可以作为实际程序使用,又可以内置于外壳中。如果是这种情况,我需要实际程序的完整路径。 PATH如2.9.1.1节,POSIX标准的命令搜索和执行中所指定,有许多实用程序可以在上找到程序。 有which,这不是任何标准的一部分。在某些系统上,它可以是常规程序,而在某些shell中,它是内置的。它似乎在大多数系统和Shell上都可用,但是具有内置版本的Shell也仅返回内置名称而不是可执行文件的路径。同样,它没有以任何方式标准化,并且可能返回任何输出并采用不同的选项。 bash# which kill /usr/bin/kill dash# which kill /usr/bin/kill fish# which kill /usr/bin/kill mksh# which kill /usr/bin/kill tcsh# which kill kill: shell built-in command. zsh# which kill kill: shell built-in command 有whence,这是一些shell的内置组件。但是在许多外壳上不可用。它也将返回内置名称而不是程序路径。-p可以将A 传递给wherece以更改此行为。 bash# whence kill bash: whence: command not found dash# whence kill dash: 1: whence: …