উত্তর:
কেবল একটি বিল্ট-ইন শেল একটি সঠিকভাবে জানায় যে প্রদত্ত কমান্ড নামটির জন্য শেলটি কী করবে, কেবল বিল্ট-ইনগুলিই কেবলমাত্র এলিয়াস, শেল ফাংশন, অন্যান্য বিল্ট-ইনগুলি এবং এগুলি সম্পর্কে পুরোপুরি জানতে পারে। মনে রাখবেন: সমস্ত কমান্ড প্রথম স্থানে এক্সিকিউটেবল ফাইলের সাথে মিল নয়।
বোর্ন আবার শেল জন্য bash
, বিল্ট-ইন রয়েছে type
কমান্ড প্রয়োগ করুন:
$ type '['
[ is a shell builtin
মাছ শেল জন্যfish
, type
builtin ব্যাশ একইভাবে কাজ করে। কার্যকর করার যোগ্য মাত্র পথ পেতে, ব্যবহার করুন 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
type
Zsh যাও অন্তর্নির্মিত হয়?
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/locate
file $(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