2012-03-23 12 views
34

मैं पूरे सिस्टम में देख रहा हूं लेकिन मुझे यह नहीं मिल रहा है। जब मैं $ PATH गूंजता हूं तो मुझे जो सामान जोड़ा गया है, साथ ही डिफ़ॉल्ट पथ भी मिलता है। मेरे पास एक .profile नहीं है, और मेरे पास एक .bashrc है, लेकिन डिफ़ॉल्ट पथ वहां नहीं है। मैं सिर्फ यह जानना चाहता हूं कि यह कहां स्थित है क्योंकि सभी ट्यूटोरियल बताते हैं कि इसमें .profile ... लेकिन क्या होगा यदि आपके पास कोई नहीं है? तब यह कहां स्थित है? किसी के पास कोई विचार है?

उत्तर

65

यदि आप sudo man path_helper करते हैं, तो यह थोड़ा सा बात करता है कि यह पथ को एक साथ कैसे रखता है। आप /etc/paths और /etc/paths.d देख सकते हैं। मैंने किया, और पाया कि मैं क्या देख रहा था।

+0

ओह, इसके लिए आपको बहुत बहुत धन्यवाद। – Andy

+0

निश्चित बात। यह खोजने के लिए दर्द का थोड़ा सा था :)। – beOn

+0

एक लर्कर से धन्यवाद! यह वास्तव में मुझे निराशाजनक था। – user18197

10

PATH सहित कई सिस्टम-व्यापी सेटिंग्स /etc/profile में सेट हैं जो स्टार्टअप पर bash द्वारा पढ़ी जाती हैं। मैक ओएस एक्स पर यह फ़ाइल PATH सेट करने के लिए आमतौर पर path_helper का उपयोग करती है। बदले में यह उपयोगिता /etc के तहत अन्य सिस्टम कॉन्फ़िगरेशन फ़ाइलों से जानकारी को पढ़ती है (path_helper manpage देखें)।

ध्यान दें कि भले ही आप प्रारंभिक फ़ाइलों को बैश द्वारा पढ़ना अक्षम करते हैं (उदाहरण के लिए कमांड लाइन विकल्पों जैसे --noprofile) यह अभी भी मूल प्रक्रिया के पर्यावरण का उत्तराधिकारी होगा।

+0

मुझे केवल रेगेक्स मिल रहा है। मैं सामान की तलाश में हूं/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin लेकिन मैं नहीं करता उसके साथ .profile है, और यह मेरे .bashrc में नहीं है, लेकिन मुझे पता है कि यह मौजूद है cuz मैं $ PATH – Andy

+0

से इसे प्रतिबिंबित कर सकता हूं, मैं देख रहा हूं कि आप क्या कह रहे हैं। – Andy

6

आप पर/etc/प्रोफ़ाइल शुरू करते हैं, यह कुछ इस तरह दिखना चाहिए:

if [ -x /usr/libexec/path_helper ]; then 
    eval `/usr/libexec/path_helper -s` 
fi 

यह देखने के लिए परीक्षण अगर फ़ाइल मौजूद है और यदि हां, तो यह निष्पादित करता है। आप हाथ से निष्पादित हैं, तो आप कुछ इस तरह मिल जाएगा:

PATH="/usr/bin:/bin:/usr/sbin:/usr/local/bin:/usr/X11/bin"; export PATH; 

मुझे विश्वास है कि आप जो खोज रहे हैं। तो यह/etc/प्रोफ़ाइल से आता है, जो बदले में निष्पादन योग्य कहता है जो पथ सेट करता है।

+0

मैं समझता हूं कि, और मैंने देखा कि एडम ने क्या बताया, लेकिन इसके होने के लिए, इसे कहीं से जानकारी प्राप्त करने की आवश्यकता है। Path_helper के अंदर अभिव्यक्ति वास्तव में उत्पन्न/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/x11/bin? – Andy

+2

वास्तव में यह पथ है कि पथ आपके पास है ('etc/profile' और '/ etc/csh.login' के माध्यम से' यदि आपका खोल sh/bash या csh/tcsh है)। लिपि के अंदर कोड को देखें, हालांकि, शेष उत्तर प्राप्त करने के लिए: यह '/ etc/paths' और'/etc/paths.d/* 'पर दिखता है (जिनमें से सभी फाइलें होनी चाहिए, प्रति पंक्ति एक पंक्ति के साथ शामिल करने के लिए पथ प्रविष्टि)। – torek

+0

मुझे समझ में नहीं आता कि "अभिव्यक्ति" से आपका क्या मतलब है। Path_helper एक द्विआधारी निष्पादन योग्य है। इसे बैकटिक्स (लाइन 2) का उपयोग करके शेल कमांड का हिस्सा कहा जाता है जो उत्पन्न होने वाले पथ सहायक को आउटपुट करता है। लाइन के eval भाग तब इंगित करता है कि पथ_हेपर का उत्पादन खोल के हिस्से के रूप में निष्पादित किया जाना चाहिए। ध्यान दें कि इसका अंतिम भाग निर्यात पाथ है, जो परिणाम को आपके पर्यावरण के खोल में रखता है। –

संबंधित मुद्दे