কোনটি এবং কোথায় কোন পার্থক্য


16

মধ্যে পার্থক্য কি whereএবং whichশেল কমান্ড? এখানে কিছু উদাহরণঃ

 ~  where cc
/usr/bin/cc
/usr/bin/cc
~  which cc
/usr/bin/cc

এবং

  ~  which which
which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
/usr/bin/which
  ~  which where
/usr/bin/which: no where in (/usr/local/bin:/bin:/usr/bin:/home/bnikhil/bin:/bin)

এছাড়াও

  ~  where which
which: aliased to alias | /usr/bin/which --tty-only --read-alias --show-dot
 --show-tilde
which: shell built-in command
/usr/bin/which
/usr/bin/which
  ~  where where
where: shell built-in command

আমার কাছে মনে হচ্ছে তারা শেল বিল্টিন হওয়ায় একই কাজটি করে, এটি নিশ্চিত নয় যে এটি কোনও কমান্ডের থেকে আলাদা কীভাবে?

উত্তর:


11

zshকয়েকটি শেলগুলির মধ্যে একটি (অন্যটি হচ্ছে tcsh( ব্যবহারকারীদের জন্য whichএকটি cshস্ক্রিপ্ট হিসাবে উদ্ভূত csh, যার এটির সীমাবদ্ধতাও ছিল, tcshএটি একটি উন্নত হিসাবে বিল্টিন হিসাবে তৈরি হয়েছিল)) যেখানে whichএটি শেল বিল্টিন থেকে সংবেদনশীল কিছু করে তবে কোনওভাবে আপনি বা আপনার ওএস (কিছু rcফাইলের মাধ্যমে ) এটি সিস্টেম whichকমান্ডের কল দিয়ে প্রতিস্থাপন করে এটি ভেঙে দেয় যা নির্ভরযোগ্যভাবে কিছুই করতে পারে না কারণ শেলটির ইন্টার্নগুলির অ্যাক্সেস নেই তাই শেল কীভাবে কোনও আদেশের নাম ব্যাখ্যা করে তা জানতে পারে না ।

Zsh, এর সব মিলিয়ে which, type, whenceএবং whereকমান্ড যে সব কি কমান্ড হয় সম্পর্কে জানতে ব্যবহার করা হয়, builtin কিন্তু বিভিন্ন আউটপুট সঙ্গে আছে। Allতিহাসিক কারণে তারা এখানে রয়েছে, আপনি whenceকমান্ডের কাছে বিভিন্ন পতাকা সহ তাদের সমস্ত আচরণ পেতে পারেন ।

দৌড়ে প্রতিটি কী করে তার বিশদ আপনি পেতে পারেন:

info -f zsh --index-search=which

বা টাইপ করুন info zsh, তারপরে সূচীটি আনুন iএবং বিল্টিন নাম প্রবেশ করুন (সম্পূর্ণতা উপলব্ধ)।

এবং ব্যবহার এড়ানো /usr/bin/which। কোন শেল আজকাল কোথায় যে which প্রয়োজন হয়। টিমোথি যেমন বলেছে, আপনার শেল যে বিল্টিনটি সরবরাহ করে তা ব্যবহার করুন। সর্বাধিক POSIX শাঁস থাকবে typeকমান্ড, এবং আপনি ব্যবহার করতে পারেন command -vশুধুমাত্র (উভয় যদিও কমান্ড পথ পেতে typeএবং command -vমধ্যে lsb POSIX (কিন্তু ইউনিক্স না ঐচ্ছিক, এবং যে কোনো না আর), তারা সব যদি না অধিকাংশ পাওয়া যায় বোর্ন-এর মতো শেলগুলি সম্ভবত আপনি কখনও আসতে পারেন)।

(BTW, এটা দেখে মনে হচ্ছে /usr/binপ্রদর্শিত হয় দুইবার আপনার $PATH, আপনি একটি যোগ করতে পারিনি typeset -U pathআপনার টু ~/.zshrc)


2
এটি আগের প্রশ্নেও উঠে এসেছিল। এই বিন্দুটি বাড়ানোর জন্য, আপনার সর্বদা কমান্ড অন্তর্নির্মিত শেল ব্যবহার করা উচিত যেখানে একটি বিদ্যমান রয়েছে। সুতরাং ব্যাশে, "যা" এর পরিবর্তে "টাইপ" ব্যবহার করুন।
টিম বি

দুর্দান্ত উত্তর এবং সেই টিপটির জন্য ধন্যবাদ।
নিখিল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.