উত্সের সমতুল্য কি আছে যা আমাকে পিতামাত বাশ প্রক্রিয়ার পরিবর্তিত পরিবেশের পরিবর্তনগুলির একটি ব্যাচ স্ক্রিপ্ট রাখতে দেয়?


1

আমার অবস্থাটি হ'ল: আমি উইন্ডোজ মেশিনে কনডা সহ অজগর ব্যবহার করি এবং কমান্ড লাইনে থাকাকালীন বেশিরভাগ সাইগউইনে কাজ করি। এখন কনডা বিভিন্ন অজগর পরিবেশের জন্য, ভার্চুয়ালেনভের অনুরূপ, তবে এটি কেবল পরিবেশ স্যুইচিংয়ের জন্য একটি অ্যাক্টিভেশন.বাট স্ক্রিপ্ট সহ পাঠায় ips সাধারণত আমি এর মতো কিছু করতাম source activate envতবে স্পষ্টত এটি কোনও নন-ব্যাশ স্ক্রিপ্ট নিয়ে কাজ করে না। আমার কাজের মত দেখতে:

cmd /C "activate $1 & bash"

যা দুর্দান্ত কাজ করে তবে কিছুটা অসন্তুষ্টিজনক কারণ এটি মনে হয় একটি কর্মক্ষেত্রের মতো। পিতামাতার প্রক্রিয়াতে কোনও শিশু প্রক্রিয়ার পরিবেশগত পরিবর্তনগুলি আমদানির কোনও উপায় আছে কি?

উত্তর:


0

ইন cmd, ভেরিয়েবলগুলি ডিফল্টরূপে পরিবেশে ফাঁস হয়। করে আপনার কমান্ড ঘিরে আছে setlocal- endlocalস্পষ্ট রূপে এই এড়ানো। অতএব, আপনি থমাস ডিকি পরামর্শ দেওয়া পদ্ধতির সাহায্যে আপনার পরিবেশের ভেরিয়েবলগুলিকে একটি .batফাইল এবং এটির আগে রাখতে পারেন call

আমরা সাধারণত উইন্ডোজ মেশিনে setenv.batএটি করি, অন্যান্য স্ক্রিপ্টগুলি চালনার আগে কমান্ড প্রম্পটে প্রথমে চালিত স্ক্রিপ্ট সরবরাহ করে।

সম্পাদনা করুন: পিতামাতার প্রক্রিয়াটির জন্য একটি পরিবেশ নির্ধারণের জন্য আমরা মাঝে মাঝে নিম্নলিখিতটি করি। কী-ভ্যালু-জোড়গুলির একটি ফাইল রয়েছে যা পরিবেশের বর্ণনা দেয়:

envkey1=envval1
envkey2=envval2

এবং এটি পিতামাতার প্রক্রিয়াতে পড়ুন এবং পরিবেশটিকে সেভাবে সামঞ্জস্য করুন।

আমার পাইথন-ফু এত দুর্দান্ত নয়, তবে পার্লে আপনি এমন কিছু করবেন

open(my $f, '<', 'env.txt');
while (<$f>) {
  chomp;
  my ($k, $v) = split(m/=/, $_, 2); # assumes '=' as separator
  $ENV{$k} = $v; # updates the current environment
}
close($f);

হ্যাঁ তবে তারা অভিভাবক প্রক্রিয়াতে ফাঁস হয় না, যা এই ক্ষেত্রে একটি সাইগউইন বাশ শেল।
কুটস্কেম

0

সম্ভবত না. একটি cmdকলটিতে আপনার "&" এর ব্যবহার আপনি যতটা পেতে পারেন তত কাছাকাছি। আপনি সম্ভবত call"অ্যাক্টিভেট.বাট" স্ক্রিপ্টটি ব্যবহার করে এটিকে কিছুটা পরিষ্কার পরিচ্ছন্ন দেখতে সক্ষম করতে পারেন ।

কারণ call"প্যারেন্ট" ব্যাচ-প্রোগ্রামটি থামায় না, এটি শেল "উত্স" এর নিকটে, যা অনুরোধ করা হয়েছিল। আমি এটি ব্যাচ-ফাইলগুলিতে ব্যবহার করি যা স্ক্রিপ্টে পরে ব্যবহারের আগে পরিবেশের ভেরিয়েবলগুলি তৈরি করে।

তবে, আপনি কোন "পিতামাতার" প্রক্রিয়াটি উল্লেখ করছেন তা অস্পষ্ট

cmd /C "activate $1 & bash"

যেহেতু আপনি প্রতিবেদন করেছেন যে আপনি activate.batপরবর্তী bashকমান্ডে ভেরিয়েবলগুলি প্রচার করছেন (যদি না আপনি এর পিতামাতার অর্থ cmd)।


হ্যাঁ আমি বলতে চাইছি cmd(সাইগউইন বাশ শেল) এর
পিতামাতা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.