Я пишу сценарий, и мне нужно найти команду в $ PATH пользователя и получить полный путь к команде. Проблема в том, что я не знаю, что такое оболочка входа пользователя или какие странные вещи могут быть в их файлах do. Я использую оболочку Bourne для моего простого маленького скрипта, потому что он должен работать на некоторых старых платформах Solaris, которые могут не иметь bash.
Некоторые реализации «which» и «fromce» будут источником точечных файлов пользователя, и это не совсем переносимо для всех пользователей. Мне бы понравилась простая утилита UNIX, которая просто выполняла бы основную работу по сканированию PATH на наличие исполняемого файла и сообщала полный путь первого совпадения.
Но я согласен на любое решение / bin / sh, стабильное для всех пользователей.
Я ищу решение, которое лучше, чем написание моего собственного цикла / bin / sh, который прерывает $ PATH и ищет его по одной строке за раз. Казалось бы, это достаточно распространено, и для этого должен быть способ многократного использования.
Мое первое приближение к «длинному пути» таково:
IFS=:
for i in $PATH; do
if [ -x $i/$cmd ]; then
echo $i/$cmd
fi
done
Есть ли что-нибудь более простое и портативное?