我正在编写一个脚本,我需要在用户的 $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/