POSIX方式找到没有`which`的foo的路径?

时间:2016-09-07 17:29:53

标签: posix sh

我遇到的机器没有which。如果foo可能不存在,如何在POSIX兼容的shell脚本中找到没有which的可执行文件foo的路径?

我的代码执行以下操作:

  • 如果根据which退出0,type which可用,则使用
  • 否则使用type foo并根据type所说的内容(输出是否包含以下任何内容:关键字,内置,别名,哈希,函数),根据其可能获取路径在输出中的位置。

@chepner和手册页指出的主要问题是type stdout是一种未指定的格式。

我的另一个问题是foo可能永远不会退出,所以我不能只执行它来看看会发生什么。我想先检查它,所以我需要知道它在哪里。

我觉得find / -type f -name foo 2>/dev/null需要太长时间。我想我可以迭代$PATH直接找到它。 哪种方法最好?迭代$PATH或上面两个子弹中的方法,还是其他方法?我需要解决方案是可移植的。

0 个答案:

没有答案