किसमें और कहां अंतर है


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 लेकिन अलग आउटपुट के साथ कर रहे हैं। वे सभी ऐतिहासिक कारण से वहां हैं, आप उनके सभी व्यवहारों को अलग-अलग झंडे के साथ 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
यह एक पहले के प्रश्न में भी आया था। इस बिंदु का विस्तार करने के लिए, आपको हमेशा कमांड में निर्मित एक शेल का उपयोग करना चाहिए जहां कोई मौजूद है। इसलिए बैश में, "जो" के बजाय "टाइप" का उपयोग करें।
टिम बी

बहुत बढ़िया जवाब और उस टिप के लिए धन्यवाद भी।
निखिल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.