小编Seb*_*der的帖子

如何在 PATH 上可靠地找到程序的完整路径?

我需要PATH使用 shell 脚本找到给定程序的路径。路径必须是程序的实际完整路径,稍后可以将其传递给exec*不搜索PATH自身的函数之一,例如execv.

有一些程序,例如kill,它们可以同时作为实际程序和内置 shell 使用。如果是这种情况,我需要实际程序的完整路径。

有几个实用程序可以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
Run Code Online (Sandbox Code Playgroud)

whence,它是几个 shell 的内置函数。但在许多外壳上不可用。它也将返回内置程序的名称而不是程序路径。-p可以将A传递给 wherece 以更改此行为。

bash# whence kill
bash: whence: command not found …
Run Code Online (Sandbox Code Playgroud)

shell path

12
推荐指数
1
解决办法
699
查看次数

标签 统计

path ×1

shell ×1