আপনি যা করার চেষ্টা করছেন তা সম্ভব নয়। এর কারণ হ'ল কোনও পসিক্স সিস্টেমে (লিনাক্স, ওএসএক্স, ইত্যাদি) কোনও শিশু প্রক্রিয়া পিতামাতার প্রক্রিয়ার পরিবেশ পরিবর্তন করতে পারে না। এর মধ্যে প্যারেন্ট প্রসেসের ওয়ার্কিং ডিরেক্টরি এবং পরিবেশের ভেরিয়েবলগুলি সংশোধন করা অন্তর্ভুক্ত includes
আপনি যখন কমান্ডলাইনে থাকেন এবং আপনি আপনার নোড স্ক্রিপ্টটি কার্যকর করতে যান আপনার বর্তমান প্রক্রিয়াটি ( bash
, zsh
যাই হোক না কেন) একটি নতুন প্রক্রিয়া তৈরি করে যার নিজস্ব পরিবেশ রয়েছে, সাধারণত আপনার বর্তমান পরিবেশের একটি অনুলিপি (এটি সিস্টেম কলের মাধ্যমে পরিবর্তন করা সম্ভব) ; তবে এটি এই জবাবের আওতার বাইরে নয়), প্রক্রিয়াটিকে সম্পূর্ণ বিচ্ছিন্নতায় যা করার দরকার তা করতে দেয়। উপ-প্রস্থানটি যখন প্রস্থান করে, নিয়ন্ত্রণটি আপনার শেলের প্রক্রিয়াতে ফিরে দেওয়া হয়, যেখানে পরিবেশ প্রভাবিত হয়নি।
এর অনেকগুলি কারণ রয়েছে, তবে একটির জন্য, আপনি কল্পনা করুন যে আপনি একটি স্ক্রিপ্টটি পটভূমিতে (মাধ্যমে ./foo.js &
) সম্পাদন করেছেন এবং এটি চলার সাথে সাথে এটি আপনার কার্যকরী ডিরেক্টরি পরিবর্তন করতে শুরু করেছে বা আপনার ওভাররাইড করে PATH
। এটি একটি দুঃস্বপ্ন হবে।
আপনার যদি শেলটির কার্যক্ষম ডিরেক্টরি পরিবর্তন করার প্রয়োজন হয় তবে আপনার শেলটিতে একটি ফাংশন লিখতে হবে। উদাহরণস্বরূপ, আপনি যদি বাশ চালাচ্ছেন তবে আপনি এটি এতে রাখতে পারেন ~/.bash_profile
:
do_cool_thing() {
cd "/Users"
echo "Hey, I'm in $PWD"
}
এবং তারপরে এই দুর্দান্ত জিনিসটি করণীয়:
$ pwd
/Users/spike
$ do_cool_thing
Hey, I'm in /Users
$ pwd
/Users
যদি আপনাকে আরও জটিল জিনিসও করার দরকার হয় তবে আপনি সর্বদা সেই ফাংশন থেকে আপনার নোডেজ স্ক্রিপ্টে কল করতে পারেন।
আপনি যা করতে চেষ্টা করছেন তা কেবলমাত্র এটিই আপনি সফল করতে পারেন।