क्या एनवी फ़ाइल से पर्यावरण चर को पढ़ने की उपयोगिता है और फिर एक कमांड (फोरमैन की तुलना में अधिक हल्के) चलाते हैं?


16

foreman .env फ़ाइलों को पढ़ सकते हैं और सामग्री से पर्यावरण चर सेट कर सकते हैं, और फिर एक कार्यक्रम चला सकते हैं

जैसे foreman run -e vars.env myprogram

... लेकिन यह बहुत सी अन्य चीजों को करता है (और मुख्य रूप से इसके प्रॉक्फ़ाइल प्रारूप का उपयोग करके चीजों को शुरू करने से संबंधित है)।

वहाँ एक सरल (लिनक्स / यूनिक्स) उपकरण है जो सिर्फ .env फ़ाइलों को पढ़ने और नए वातावरण के साथ एक कमांड निष्पादित करने पर केंद्रित है?

उदाहरण पर्यावरण फ़ाइल ( http://ddollar.github.io/foreman/#ENVIRONMENT से ):

FOO=bar
BAZ=qux

1
क्या आप एक उदाहरण .env फ़ाइल पोस्ट कर सकते हैं? मुझे शक है bash .envया sh .envकाम हो सकता है?
डैनियल विड्रिक

@ IVlint67 मैंने सवाल को थोड़ा सुधार दिया है।
वोडो

जवाबों:


19

आप सक्रिय शेल में पर्यावरण फ़ाइल को स्रोत कर सकते हैं और प्रोग्राम चला सकते हैं:

sh -ac ' . ./.env; /usr/local/bin/someprogram'

-aस्विच सभी चर का निर्यात करता है, ताकि वे कार्यक्रम के लिए उपलब्ध हैं।


3
bash -ac 'source .env && ./program'
फिएटजैफ

@fiatjaf आप इस मामले में bash का उपयोग क्यों करेंगे यदि POSIX शेल काम करता है और आपको ऐसी कोई सुविधा नहीं चाहिए जो वास्तव मेंash की आवश्यकता है? इसके अलावा, सभी सिस्टम (जैसे FreeBSD) पर डिफ़ॉल्ट रूप से बैश उपलब्ध नहीं है।
मार्को

ओह, ठीक है, समझ में आता है, मुझे लगता है कि आपका रास्ता बेहतर है, फिर। मैं बस बैश विकल्प प्रदान कर रहा था क्योंकि मुझे यह लिखने में अधिक सहज महसूस हुआ।
फियातजफ

2

एक अन्य विकल्प है envdir:

envdir एक निर्दिष्ट निर्देशिका में फ़ाइलों के अनुसार संशोधित पर्यावरण के साथ एक और कार्यक्रम चलाता है।


इस पोस्ट के बीच कुछ पूरक सुविधाओं का उल्लेख है envdir, runitऔर chpst; बदले जाने की क्षमता अर्थात् एनवी संस्करण की प्रक्रिया के चलने की स्थिति को दर्शाती है। पोस्ट डॉकटर के बारे में है लेकिन यह डॉकटर तक सीमित नहीं है। blog.ghaering.de/post/docker-as-vm [ ark.org : web.archive.org/web/20190321165332/https://blog.ghaering.de/… ]
drccatcher

2

मैंने कोशिश की source .envऔर यह एक आकर्षण की तरह काम किया। दुर्भाग्य से, यहां पोस्ट किए गए अन्य समाधानों में से कोई भी मेरे लिए काम नहीं किया।


0

यह काम:

env $(cat .env | tr "\\n" " ") myprogram

लेकिन स्पष्ट रूप से .envशुद्धता के लिए फ़ाइल के प्रारूप की जांच नहीं करता है , जो एक उपयोगिता कार्यक्रम करेगा।


1) यह catआवश्यक नहीं है, बस tr "\\n" " " < .env2 लिखें ) यह तब टूटता है जब मल्टी-लाइन असाइनमेंट का उपयोग किया जाता है।
मार्को
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.