কিছু সিস্টেমে which -a
সমস্ত ম্যাচ দেখায়। যদি আপনার শেলটি বাশ বা zsh¹ হয় তবে আপনি তার type
পরিবর্তে ব্যবহার করতে পারেন : type foo
প্রথম ম্যাচটি type -a foo
দেখায় এবং সমস্ত মিল দেখায়। তিনটি আদেশ type
, which
এবং whence
বেশিরভাগই একই জিনিস; এগুলি শেল এবং অপারেটিং সিস্টেমের উপলব্ধতা, বিকল্পগুলি এবং ঠিক কীভাবে তারা রিপোর্ট করে তার মধ্যে পার্থক্য রয়েছে। type
সর্বদা উপলভ্য এবং সম্ভাব্য সমস্ত কমান্ডের মতো নাম (উপকরণ, কীওয়ার্ডস, শেল বিল্ট-ইনস, ফাংশন এবং বাহ্যিক আদেশগুলি) দেখায়।
সমস্ত ম্যাচ প্রদর্শনের একমাত্র সম্পূর্ণ পোর্টেবল উপায় হ'ল $PATH
নিজেকে পার্স করা । এখানে এটির একটি শেল স্ক্রিপ্ট রয়েছে। যদি আপনি এটিকে শেল ফাংশন করেন তবে নিশ্চিত হয়ে নিন যে ফাংশন বডিটি বন্ধনীতে আবদ্ধ করুন (যাতে ফাংশনে পরিবর্তন আসে IFS
এবং set -f
এড়াতে না পারে), এবং এতে পরিবর্তন exit
হয় return
।
#!/bin/sh
set -f # disable globbing
IFS=: # break words at : only
not_found=1
for d in $PATH; do
if [ -f "$d/$x" ] && [ -x "$d/$x" ]; then
printf '%s\n' "$d/$x"
not_found=0
fi
done
exit $not_found
Document
বা ksh 93 ডকুমেন্টেশন অনুসারে, যদিও ksh 93s + 2008-01-31 আমি প্রথম চেষ্টা করলেই প্রথম ম্যাচটি মুদ্রণ করে।
which --all
।