मेकफाइल में शेल पर्यावरण चर कैसे प्राप्त करें?


105

प्रवेश करते ही खोल में

echo $demoPath

यह प्रिंट करता है

/usr/local/demo

मैं $demoPathएक बदलाव में इस चर का मूल्य कैसे प्राप्त कर सकता हूं ?

जवाबों:


157

यदि आपने पर्यावरण चर निर्यात किया है:

export demoPath=/usr/local/demo

आप बस नाम से इसका उल्लेख कर सकते हैं makefile( makeआपके द्वारा निर्धारित सभी पर्यावरण चर आयात करता है):

DEMOPATH = ${demoPath}    # Or $(demoPath) if you prefer.

यदि आपने पर्यावरण चर का निर्यात नहीं किया है, तो यह तब तक सुलभ नहीं है जब तक आप इसे निर्यात नहीं करते हैं, या जब तक कि आप इसे कमांड लाइन पर स्पष्ट रूप से पास नहीं करते हैं:

make DEMOPATH="${demoPath}" 

यदि आप C शेल व्युत्पन्न का उपयोग कर रहे हैं, setenv demoPath /usr/local/demoतो exportकमांड के लिए विकल्प ।


3
"आपके द्वारा निर्धारित सभी पर्यावरण चर आयात करें"। यह काम करता है! अच्छा ~, मुझे इस बारे में पहले से कोई जानकारी नहीं है, बहुत-बहुत धन्यवाद।
जियालिन

@jonathan_leffler मैं आपके उत्तर से प्रेरित था और मैंने कुछ अलग किया। मैं इसे निर्यात किए बिना कॉल करने से पहले एनवार सेट करता हूं demoPath=/usr/local/demo make:। आप इसका परीक्षण कर सकते हैं और शायद अपना उत्तर अपडेट कर रहे हैं। चीयर्स!
ई.पू.

@ हां, यह एक विशिष्ट कमांड के लिए पर्यावरण चर के लिए एक मूल्य निर्धारित करने के लिए एक और तंत्र है। यह उस सवाल से थोड़ा मेल खाता है जो पूछता है कि मौजूदा चर के मूल्य का उपयोग कैसे किया जाए, बजाय इसके कि मक्खी पर कैसे निर्माण किया जाए। यह इस अवसर पर एक उपयोगी तकनीक होने से नहीं रोकता है।
जोनाथन लेफ्लर

11

उन लोगों के लिए जो व्यवहार की पुष्टि करने के लिए कुछ आधिकारिक दस्तावेज चाहते हैं

मेक इन वेरिएबल्स उस वातावरण से आ सकते हैं जिसमें मेक रन किया जाता है। प्रत्येक पर्यावरण चर जो बनाता है जब देखता है कि यह एक ही नाम और मूल्य के साथ एक परिवर्तनशील चर में बदल जाता है। हालाँकि, मेकफाइल में या कमांड तर्क के साथ एक स्पष्ट असाइनमेंट, पर्यावरण को ओवरराइड करता है। (यदि '-ई' ध्वज निर्दिष्ट किया गया है, तो पर्यावरण से मान मेकफ़िल में असाइनमेंट को ओवरराइड करता है।

https://www.gnu.org/software/make/manual/html_node/Environment.html


6
all:
    echo ${PATH}

या केवल एक कमांड के लिए पाथ बदलें:

all:
    PATH=/my/path:${PATH} cmd
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.