path - 在 $PATH 上查找命令

标签 path sh

我正在编写一个脚本,我需要在用户的 $PATH 上查找命令并获取该命令的完整路径。问题是我不知道用户的登录 shell 是什么,或者他们的 do 文件中可能有什么奇怪的东西。我使用 bourne shell 来编写简单的小脚本,因为它需要在一些可能没有 bash 的旧版 Solaris 平台上运行。

“which”和“whence”的某些实现将获取用户的点文件,但这并不是真正适合所有用户。我想要一个简单的 UNIX 实用程序,它只执行扫描可执行文件的 PATH 并报告第一个匹配的完整路径的基本工作。

但我会选择任何对所有用户都稳定的/bin/sh 解决方案。

我正在寻找一种比编写自己的/bin/sh 循环更好的解决方案,该循环会分割 $PATH 并一次一行地搜索它。这似乎很常见,应该有一种可重用的方法来做到这一点。

我对“漫长道路”的第一个近似是这样的:

   IFS=:
   for i in $PATH; do
      if [ -x $i/$cmd ]; then
          echo $i/$cmd
      fi
   done

有没有更简单、便携的东西?

最佳答案

答案似乎是内置的“类型”。

% /bin/sh
$ type ls
ls is /bin/ls

关于path - 在 $PATH 上查找命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7277680/

相关文章:

用于检测来自特定域的任何通配符 url 的 Javascript(例如 : google)

windows - 为什么 Windows 存在 260 个字符的路径长度限制?

linux - 我需要 solaris 的文件大小警报脚本

tomcat - 在 Linux 热点 7 中运行的 tomcat 7 的 VM 参数的正确语法是什么

bash - 过滤输入以删除某些字符/字符串

bash - 从参数中获取文件的完整路径

python - 从 Windows 路径变量执行 Python 脚本

ios - SpriteKit - 在半圆拱中移动物体

android - ADT 包无法识别我在 ubuntu 上的路径

bash - Dash shell 无法在没有双引号的情况下执行给定的命令