我遇到的机器没有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
或上面两个子弹中的方法,还是其他方法?我需要解决方案是可移植的。