मैक ओएस एक्स में "व्हिसिस" और "जो" अलग-अलग रास्ते लौटाते हैं


27

मुझे डिफ़ॉल्ट ओपनएसएसएल 9.8 (मैक ओएस एक्स 10.6.8) मिला है और मैकप्रॉर्ट्स ( sudo port install openssl) के माध्यम से नवीनतम संस्करण (1.0.1) स्थापित करने का फैसला किया है ।

इनमें से कौन सा और कहां कमांड का कंसोल आउटपुट हैं :

$ whereis openssl
/usr/bin/openssl

(यह डिफ़ॉल्ट सिस्टम एक है)

$which openssl
/opt/local/bin/openssl

(यह MacPorts के माध्यम से स्थापित किया गया है)

$ openssl version
OpenSSL 1.0.1c 10 May 2012

(पेट में मैक पोर्ट का संस्करण है)

क्यों अलग अलग रास्तों के लिए वापस आ रहे हैं whereisऔर which, और यह ठीक है? क्या समान परिणाम प्राप्त करने का कोई तरीका है?

जवाबों:


31

के मेनपेज में whereis, यह स्पष्ट रूप से कहता है (मेरा जोर):

जहां उपयोगिता निर्दिष्ट कार्यक्रमों के लिए मानक द्विआधारी निर्देशिकाओं की जांच करती है , किसी भी पथ के प्रिंट को प्रिंट करती है।

खोजा गया मार्ग `` user.cs_path 'स्ट्रिंग के लिए sysctl (8) उपयोगिता द्वारा लौटाया गया स्ट्रिंग है

इसके विपरीत, whichउपकरण आमतौर पर यह जांचने के लिए उपयोग किया जाता है कि बाइनरी आपके उपयोगकर्ता के पथ के लिए कहां है।

कौन-सी उपयोगिता कमांड नामों की एक सूची लेती है और प्रत्येक निष्पादन योग्य फ़ाइल के लिए पथ खोजती है जो कि चलाया जाएगा इन कमांडों को वास्तव में लागू किया गया था

यह आपके अंतर की व्याख्या करता है, क्योंकि /opt/local/binसिस्टम-वाइड "मानक" पथ नहीं है - आखिरकार, MacPorts एक पूरी तरह से वैकल्पिक स्थापना है - और sysctlकेवल /usr/bin:/bin:/usr/sbin:/sbinइसके user.cs_pathडिफ़ॉल्ट रूप में है।

सामान्य तौर पर, उपयोग करने के बजाय एक द्विआधारी खोजने के लिए छड़ी whichया ।which -awhereis


आप सैद्धांतिक रूप से बदल सकते हैं user.cs_pathके माध्यम से

sysctl -w user.cs_path=/opt/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

लेकिन मुझे नहीं पता कि यह इतना अच्छा विचार है।


धन्यवाद, आपने कहा है कि "जहाँ उपयोगिता मानक बाइनरी निर्देशिकाओं की जाँच करता है " - यही उत्तर है! आप छोटी प्रतिष्ठा (
jctim

चिंता मत करो, आप निश्चित रूप से जल्द ही अधिक प्रतिष्ठा प्राप्त करेंगे। सुपर उपयोगकर्ता में आपका स्वागत है! :)
slhck

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