উত্তর:
কেবল একটি বিল্ট-ইন শেল একটি সঠিকভাবে জানায় যে প্রদত্ত কমান্ড নামটির জন্য শেলটি কী করবে, কেবল বিল্ট-ইনগুলিই কেবলমাত্র এলিয়াস, শেল ফাংশন, অন্যান্য বিল্ট-ইনগুলি এবং এগুলি সম্পর্কে পুরোপুরি জানতে পারে। মনে রাখবেন: সমস্ত কমান্ড প্রথম স্থানে এক্সিকিউটেবল ফাইলের সাথে মিল নয়।
বোর্ন আবার শেল জন্য bash, বিল্ট-ইন রয়েছে typeকমান্ড প্রয়োগ করুন:
$ type '['
[ is a shell builtin
মাছ শেল জন্যfish , typebuiltin ব্যাশ একইভাবে কাজ করে। কার্যকর করার যোগ্য মাত্র পথ পেতে, ব্যবহার করুন command -v:
$ type cat
cat is /bin/cat
$ command -v cat
/bin/cat
Korn থেকে শেল জন্য ksh, বিল্ট-ইন রয়েছে whenceকমান্ড - সঙ্গে typeপ্রাথমিকভাবে জন্য একজন সাধারণ ওরফে হিসাবে সেট আপ whence -vএবং commandবিল্ট-ইন সঙ্গে -vকরার বিকল্প সমতুল্য whence:
$ whence -v ls
ls is a tracked alias for /bin/ls
জেড শেল জন্য zsh, বিল্ট-ইন রয়েছে whenceকমান্ড দিয়ে commandবিল্ট-ইন সঙ্গে -vকরার বিকল্প সমতুল্য whenceআর অন্তর্নির্মিত ইনস type, whichএবং whereসমতুল্য whenceবিকল্প সহ -v, -cএবং -caযথাক্রমে।
$ whence ls
/bin/ls
টিসি শেল জন্য tcsh, বিল্ট-ইন রয়েছে whichকমান্ড - যে নামে কোন বাইরের আদেশের সঙ্গে বিভ্রান্ত করা যাবে না:
> which ls
ls: aliased to ls-F
> which \ls
/bin/ls
typeZsh যাও অন্তর্নির্মিত হয়?
which-2.19-6.el6.x86_64) একটি স্টার্টআপ ফাইল রাখে /etc/profile.d/which2.sh। এটি zsh সহ নন-সিএস শেলগুলি পড়ে। এটি whichনিজের কাছে উপাধি দেয়। সুতরাং zsh ব্যবহারকারীদের জন্য বিশেষত এটি বিল্টিনকে ভেঙে দেয় which।
আপনি এটির whichজন্য ব্যবহার করতে পারেন :
aix@aix:~$ which ls
/bin/ls
এটি PATHআর্গুমেন্টের নামের সাথে মিলে এক্সিকিউটেবল ফাইলগুলি অনুসন্ধান করে কাজ করে । নোটটি শেল এলিয়াসগুলির সাথে কাজ করে না:
aix@aix:~$ alias listdir=/bin/ls
aix@aix:~$ listdir /
bin dev initrd.img lib32 media proc selinux tmp vmlinuz
...
aix@aix:~$ which listdir
aix@aix:~$
typeতবে, কাজ করে:
aix@aix:~$ type listdir
listdir is aliased to `/bin/ls'
whichঅগত্যা তার নিজের পক্ষে যথেষ্ট নয়। এটা শুধুমাত্র ফেরৎ প্রথম পাওয়া নাম $ PATH- এ ... যে নাম একটি সিম্বলিক লিঙ্ক, এবং হতে পারে না প্রকৃত শেষ অফ শৃঙ্খল এক্সিকিউটেবল।
whichএক্সিকিউটেবল ফাইলটি (প্রয়োজনীয়ভাবে) ফেরত দেয় না । এটি matching PATH (বা ব্যবহারের সময় নামযুক্ত ফাইলগুলির মতো একাধিক ) -এ খুঁজে পাওয়া প্রথম মিলে যাওয়া ফাইলের নাম ফিরিয়ে দেয় which -a... প্রকৃত নির্বাহযোগ্য একাধিক লিঙ্ক দূরে থাকতে পারে।
which locate/usr/bin/locatefile $(which locate)/usr/bin/locate: symbolic link to /etc/alternatives/locate' কমান্ড যা খুঁজে বের করে প্রকৃত এক্সিকিউটেবল হয় readlink -e,
(সাথে which)
readlink -e $(which locate)/usr/bin/mlocate সমস্ত মধ্যবর্তী লিঙ্ক দেখতে :
f="$(which locate)" # find name in $PATH
printf "# %s\n" "$f"
while f="$(readlink "$f")" ;do # follow links to executable
printf "# %s\n" "$f"
done
# /usr/bin/locate
# /etc/alternatives/locate
# /usr/bin/mlocate
আপনি চেষ্টা করতে পারেন:
whereis ls
এটি আমাকে দেয়:
ls: /bin/ls /usr/share/man/man1/ls.1.gz