এনভিলিভ ফাইল থেকে এনভায়রনমেন্ট ভেরিয়েবলগুলি পড়ার এবং তারপরে একটি কমান্ড চালানো (ফোরম্যানের চেয়ে বেশি লাইটওয়েট) কী আছে?


16

foreman .env ফাইলগুলি পড়তে পারেন এবং সামগ্রীগুলি থেকে পরিবেশের ভেরিয়েবল সেট করতে পারেন এবং তারপরে একটি প্রোগ্রাম চালাতে পারেন

যেমন foreman run -e vars.env myprogram

... তবে এটি অন্যান্য অনেকগুলি কাজ করে (এবং প্রাথমিকভাবে এর প্রসফাইল ফর্ম্যাটটি ব্যবহার করে জিনিস শুরু করার সাথে সম্পর্কিত)।

এমন কোন সরল (লিনাক্স / ইউনিক্স) সরঞ্জাম রয়েছে যা কেবলমাত্র .env ফাইলগুলি পড়তে এবং নতুন পরিবেশের সাথে একটি কমান্ড চালানোর বিষয়ে দৃষ্টি নিবদ্ধ করে?

উদাহরণস্বরূপ পরিবেশ ফাইল ( http://dollar.github.io/foreman/#ENVIRONMENT থেকে ):

FOO=bar
BAZ=qux

1
আপনি .env ফাইল একটি উদাহরণ পোস্ট করতে পারেন? আমার সন্দেহ হয় bash .envনাকি sh .envকাজ করতে পারে?
ড্যানিয়েল উইড্রিক

@ আইভিলিন্ট 67 আমি প্রশ্নটি কিছুটা উন্নত করেছি।
Wodow

উত্তর:


19

আপনি সক্রিয় শেলটিতে পরিবেশ ফাইলটি উত্স করতে এবং প্রোগ্রামটি চালাতে পারেন:

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

-aসুইচ সব ভেরিয়েবল রপ্তানি, যাতে তারা প্রোগ্রাম পাওয়া যায়।


3
bash -ac 'source .env && ./program'
ফায়াতজাফ

@fiatjaf আপনি যদি POSIX শেলটি কাজ করে এবং আপনার আসলে এমন কোনও বৈশিষ্ট্যের প্রয়োজন নেই যার জন্য ব্যাশের প্রয়োজন হয় তবে আপনি কেন এই ক্ষেত্রে ব্যাশ ব্যবহার করবেন? তদুপরি, ব্যাশ সমস্ত সিস্টেমে ডিফল্টরূপে উপলব্ধ হয় না (যেমন ফ্রিবিএসডি)।
মার্কো

ওহ, ঠিক আছে, বোধগম্য, আমি মনে করি আপনার উপায়টি আরও ভাল is আমি কেবল বাশ বিকল্প সরবরাহ করছিলাম কারণ আমি এটি লিখতে আরও স্বাচ্ছন্দ্যবোধ করেছি।
ফিয়াটজাফ

2

আর একটি বিকল্প হ'ল envdir:

envdir একটি নির্দিষ্ট ডিরেক্টরিতে ফাইল অনুসারে পরিবেশ পরিবর্তিত করে একটি আর প্রোগ্রাম চালায়।


এই পোস্টটি মধ্যে কিছু পরিপূরক বৈশিষ্ট্য উল্লেখ envdir, runitএবং chpst; এনভ ভার্সগুলি পরিবর্তিত করার ক্ষমতাটি প্রক্রিয়াটি পরিচালিত হওয়ার অবস্থায় প্রতিফলিত করে। পোস্টটি ডকার সম্পর্কে তবে এটি ডকারের মধ্যেই সীমাবদ্ধ নয়। blog.ghaering.de/post/docker-as-vm [আর্কাইভ.অর্গ: ওয়েব.আরচিভ.আর.ইউবি / 909011113332/https : //blog.ghaering.de/… ]
ড্রিফ্যাচচার 21'19

2

আমি চেষ্টা করেছি source .envএবং এটি একটি কবজির মতো কাজ করেছে। দুর্ভাগ্যক্রমে, এখানে পোস্ট করা অন্য কোনও সমাধান আমার পক্ষে কাজ করেনি।


0

এইটা কাজ করে:

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

তবে স্পষ্টতই .envসঠিকতার জন্য ফাইলটির ফর্ম্যাটটি যাচাই করে না , যা কোনও ইউটিলিটি প্রোগ্রাম করবে program


1) catপ্রয়োজনীয় নয়, কেবল লিখুন tr "\\n" " " < .env2) মাল্টি-লাইন অ্যাসাইনমেন্টগুলি ব্যবহার করা হলে এটি বিরতি দেয়।
মার্কো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.